定时器中断
来源:互联网 发布:盆腔炎导致不孕 知乎 编辑:程序博客网 时间:2024/04/29 04:46
系统初始化的时候在默认的系统初始化函数 SystemInit 函数里面已经初始化 APB1 的时钟为 2 分频,
TIM_GetITStatus 函数中会先判断这种中断是否使能,使能了才去判断中断标志位,而TIM_GetFlagStatus 直接用来判断状态标志位。
所以 APB1 的时钟为 36M。当 APB1 的时钟分频数为 1 的时候,TIM2~7 的时钟为 APB1 的时钟,而如果 APB1 的时钟分频数不为 1,那么 TIM2~7 的时钟频率将为 APB1 时钟的两倍。因此, TIM3 的时钟为 72M。
Tout= ((arr+1)*(psc+1))/Tclk;
其中:
Tclk:TIM3 的输入时钟频率(单位为 Mhz)。
Tout:TIM3 溢出时间(单位为 us)。
TIM1 & TIM8为高级定时器,挂载在APB2上。
下面以TIM3为例讲诉库函数下定时器中断的配置。
void TIM3_Init(u16 arr,u16 psc) //arr重载计数周期 psc分频系数{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; IM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数模式向上计数TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能TIM3外设//中断优先级配置NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;//抢占优先级3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//响应优先级1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM3, ENABLE); //使能中断}void TIM3_IRQHandler(void) //中断服务函数{if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //判断中断使能和标志位{TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除标志位LED1=!LED1;}}
在main函数中调用TIM3_Init(4999,7199);
Tout= ((4999+1)*( 7199+1))/72=500000us=500ms。
所以TIM3溢出时间周期为500ms。
0 0
- 定时器中断
- 定时器中断
- 定时器中断
- 中断定时器
- 定时器中断
- 定时器中断
- 定时器中断
- 定时器中断
- 定时器中断
- 定时器中断
- 51中断-定时器/计数器中断
- 定时器与中断概念
- 中断和定时器实验
- 中断和定时器
- 中断与内核定时器
- 中断与定时器
- 初始化定时器中断
- 定时器10s中断
- 使用QGraphicView控件的对话框不能作为static变量或全局变量?
- applicationContext.xml 配置文件的一些认识--(转)
- windows tomcat配置,以及tomcat的服务设置
- Handling Compression (Accept-Encoding) Sample
- POJ 3087 Shuffle'm Up
- 定时器中断
- 程序员,你需要大量地阅读
- ACM算法学习之贪心法---POJ3617(代码篇)
- uva116Unidirectional TSP
- 观《统计学习方法》中多项式函数拟合后的思考
- fedora 20 安装 chrome 浏览器
- 我的三年软件测试之路----金阳光老师自传
- leetcode做题总结,题目Add Two Numbers /Add Binary 2011/11/01&2012/04/02
- SGI STL 和 VS下STL的vector不同内存增长策略