首页 > 代码库 > STM32通用定时器实现LED灯闪烁
STM32通用定时器实现LED灯闪烁
刚才看了一下STM32通用定时器的教程,其实和51的定时器使用差不多。只是因为32的时钟更复杂,可操控的寄存器更多,所以写的时候可能更复杂。
使用通用定时器中断的一般步骤:
1、使能定时器时钟
这个需要看时钟树,使能对应的时钟就好了。这里我使用的是TIM3,所以使能APB1的时钟即可。
2、设置定时器的分频系数和重装载值
定时器中断的时间为:Tout = (arr+1)/[Tclk/(psc+1)]
其实这个定时器中断时间还是要具体分析,这里是这样,其他地方或许不是这样,具体还是要参考《STM32参考手册》。
3、使能定时器中断
4、启动定时器
5、定时器中断初始化,设置它的中断优先级,分组之类的
6、编写中断服务函数
下面是对应的代码
//初始化定时器 void TIMER_Init(u16 psc,u16 arr){ RCC->APB1ENR = 1<<1; //使能定时器时钟 TIM3->PSC = psc; //设置预分频系数 TIM3->ARR = arr; //设置重装载值 TIM3->DIER |= 1<<0; //使能定时器中断 TIM3->CR1 |= 1<<0; //启动定时器 MY_NVIC_Init(1,3,TIM3_IRQn,2); //定时器中断初始化 } //中断服务函数 void TIM3_IRQHandler(){ if(TIM3->SR&0x0001)LED0 = ~LED0; TIM3->SR &= ~(1<<0); //清除中断标志 }
STM32通用定时器实现LED灯闪烁
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。