stm32cubemx 定时器中断
Posted 等不到星光等时光呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32cubemx 定时器中断相关的知识,希望对你有一定的参考价值。
stm32cubemx 定时器中断
一、基础知识
stm32f4:
二、软件配置
定时器时钟源:
-
APB2负责AD,I/O,高级TIM,串口1。
-
APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。
所支持速度不同:APB2支持高速状态下的工作,APB1支持低速状态下的工作。
我所使用的如下:
这里配置定时器2,每隔1秒产生一次中断。计数器时钟源选择内部时钟(Internal Clock),ETR2为外部时钟模式2。
下面配置定时器的参数。APB1时钟频率为84Mhz.
- Prescaler(时钟预分频数):4200-1
- Counter Mode(计数模式):Up(向上计数模式) 基本定时器只能是向上计数
- Counter Period(自动重装载值):2000-1 则定时时间 Tclk={1/[84 000 000 / (4200-1+1)] }* (2000-1+1)=1 秒
- auto-reload-preload(自动重装载):Enable(使能)
- TRGO Parameters(触发输出):不使能 在定时器的定时时间到达的时候输出一个信号(如:定时器更新产TRGO信号来触发ADC的同步转换)
Counter Mode,Counter Period这俩个参数都是16位的,范围是0~65535.
并是能定时器中断。
三、代码实现
定时器初始化完成之后,要启动定时器,用下面的函数。
HAL_TIM_Base_Start_IT(&htim2);
在定时器回调函数中完成对应的任务,回调函数如下:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == (&htim2))
{
LED2=!LED2;
}
}
这样就可实现每隔一秒led灯闪烁。
以上是关于stm32cubemx 定时器中断的主要内容,如果未能解决你的问题,请参考以下文章
STM32G070RBT6基于STM32CubeMX创建定时器中断控制LED闪烁