历史上的今天

今天是:2024年09月24日(星期二)

正在发生

2019年09月24日 | STM32F1x系列——外部中断

发布者:化羽2015 来源: eefocus关键字:STM32F1x系列  外部中断 手机看文章 扫描二维码
随时随地手机看文章

一 通用定时器的工作过程如下图:

 

二 计数器模式:


(1)向上计数模式:计数器从0计数到自动加载值,然后重新从0开始计数并且产生一个计数器溢出事件


(2)向下计数模式:计数器从自动装入的值开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出的事件


(3)中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1,并且产生一个计数器溢出事件,然后再从0开始计数


通用定时器常用寄存器和库函数:


(1)定时器使能函数:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)


(2)定时器中断使能函数:void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)


(3)状态标志位获取和清除:


      FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

      void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

      ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

      void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);


三  定时器中断实现步骤:


(1)使能定时器时钟:RCC_APB1PeriphClockCmd();


(2)初始化定时器,配置ARR,PSC:TIM_TimeBaseInit();


(3)开启定时器中断,配置NVIC:


      void TIM_ITConfig();

      NVIC_Init();


(4)使能定时器:TIM_Cmd();


(5)编写中断服务函数:TIMx_IRQHandler();



四 定时器的计算:Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk


五 下面是定时中断的代码:


(1)TIME.c



void TIM3_Int_Init(u16 arr,u16 psc)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能

//定时器TIM3初始化

TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位

 

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断

 

//中断优先级NVIC设置

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; 

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

 

 

TIM_Cmd(TIM3, ENABLE);  //使能TIM3  

}

//定时器3中断服务程序

void TIM3_IRQHandler(void)   //TIM3中断

{

static u8 count=0;

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生否

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIM3更新中断标志

LED1=!LED1;

}

}



(2)MAIN.c


int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

         delay_init();

LED_Init();

TIM3_Int_Init(4999,7199) ;  //500ms 

while(1)

{

 

LED3 = !LED3 ;     //LED3每隔200ms亮

delay_ms(200) ;

 

}

 

}

程序仿真下载后:LED3每隔200ms闪烁,LED1每隔500ms闪烁

关键字:STM32F1x系列  外部中断 引用地址:STM32F1x系列——外部中断

上一篇:USART_ClearITPendingBith和 USART_ClearFlag的区别
下一篇:STM32F1x系列——定时器中断

推荐阅读

上海,2018年9月18日—— 作为设计和生产创新性半导体材料的全球领军企业,Soitec半导体公司于2018年9月18日至19日参加了在上海由SOI国际产业联盟举办的第六届FD-SOI高峰论坛暨国际RF-SOI研讨会(Shanghai FD-SOI Forum & International RF-SOI Workshop)。来自国际顶级半导体公司、科研院所、投资机构和政府部门的业内精英在本届高峰论坛上就FD-S...
位于纽约州的最先进晶圆fab和北卡罗莱纳州的超级材料工厂,将创建在美国东海岸的SiC走廊 合作将带来更大规模的高自动化晶圆fab,实现比原先计划更低的净成本原计划的200mm功率与射频晶圆制造工厂,也就是“North Fab”,将在纽约州的新址进行建造超级材料工厂的建造扩产,将继续在北卡罗莱纳州的公司全球总部进行该计划将实现25%产能提升和更低的净资本性...
在昨日的华为全联接大会上,华为消费者业务云服务总裁张平安发表主题演讲。他介绍,在 HMS 生态中,华为面向全球开发者和伙伴开放了支付引擎,广告引擎,浏览引擎,地图引擎,以及搜索引擎这五大根服务能力。因为有了全面开放的能力,全球开发者加入了 HMS 生态的数量快速增长,目前已经达到 180 万,相比去年同期几乎翻倍;集成 HMS Core 的应用...
具体实现功能系统由STC89C51单片机+数码管显示模块+按键模块+电源模块构成具体功能:(1)能记录单节比赛的比赛时间,并能修改时间,暂停比赛。(2)能随时刷新甲、乙两队在整个赛程中的比分。(3)场中交换比赛场地时,能交换甲、乙两队比分的位置。(4)比赛时间结束时,能发出报警指令。(5)有24秒倒计时功能,可通过按键随时复位24秒,如果24秒违例会...

史海拾趣

问答坊 | AI 解惑

模拟视频技术和应用

模拟视频技术和应用(一) 模拟视频信号已经应用了几十年,至今仍在使用。最原始且最常见的通用视频标准包括了NTSC(美国国家电视系统委员会)以及PAL(逐行倒相制式)。其它的现代消费模拟视频传输系统包括了S-Video、分量视频(Component Video) ...…

查看全部问答∨

wince5.0 宋体黑体如何实现?

各位老大,小弟最近在做关于wince5.0下字体的工作,不知wince5.0下宋体黑体字如何实现,望赐教!…

查看全部问答∨

GPRS编程

最近要做一个在LINUX平台下用ARM开发板开发一个GPRS数据传输的题目,以前没有接触过GPRS之类的东西, 特像各位大侠要点关于GPRS编程的材料,有实例更好 我QQ:380953301 Email:380953301@qq.com…

查看全部问答∨

Anyone has techwell tw6802 datasheet?

Hi:     I am from taiwan. I don\'t know how to type simplified Chinese. I need tw6802 datasheet and I cannot find that datasheet in the internet except its brief introdution in the following url: http://www.techwelli ...…

查看全部问答∨

STM32F103CBT61版本......

最近采购一批芯片发现和以前的Y版本不一样是L或者1版本? ST网站上没有任何消息只说最新版本到Y,有谁能证实下吗? 刚刚看到有人说不稳定......急盼回复啊…

查看全部问答∨

TI用TMX320F28XXX做开发板不会有问题么?

刚刚看到TI的Piccolo MCU Experimenter\'s Kit板载的不是TMS320F28XXX 而是TMX320F28XXXTI这么做是不是说明 TMX320F28XXX  最也能保障其片上一切资源都能正常工作呢?最多不像TMS320F28XXX那样能长时间稳定工作我Google了一下发觉有些用 ...…

查看全部问答∨

AM335x学习心得之定时器

对AM335X定时器的学习,自己的总结,希望有用。 …

查看全部问答∨

vxworks ping不通 0xd0003

vxworks 网络下载时 会卡在loading那里很长时间,然后显示错误0xd0003 不能下载文件。有没有哪位知道怎么解决呢。另外,ftp服务器已开,无打印信息。还请各位不吝指导,兄弟我在这里谢谢了。…

查看全部问答∨

AD没有转换 LCD上一直显示3.29v.求大神耐心看看,小弟毕设需过此关!!!

#include <msp430x24x.h> #define uint unsigned int                                         ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved