STM32通用定时器实现LED灯闪烁

Posted 猫咪大王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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灯闪烁的主要内容,如果未能解决你的问题,请参考以下文章

STM32怎么实现单片机控制LED灯常亮10S后熄灭?

STM32F103VET6基于STM32CubeMX创建定时器中断控制LED闪烁

STM32点亮闪烁LED灯

STM32 定时器

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现板载LED灯循环闪烁

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁