前言:
今天我们来学习定时器,32的定时器有着非常丰富的功能, 输入捕获/输出比较,PWM,中断等等。是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
所用工具:
1、芯片: STM32F407ZET6/STM32F103ZET6
2、STM32CubeMx软件
3、IDE: MDK-Keil软件
4、STM32F1xx/STM32F4xxHAL库
5
知识概括:
通过本篇博客您将学到:
SMT32定时器原理
STM32CubeMX创建定时器例程
HAL库TIM定时器函数库
定时器中断的创建与使用
《【STM32】系统时钟RCC详解(超详细,超全面)》
3定时器设置
1选择TIM2
2定时器时钟选择内部时钟
Clock Source(时钟来源)
选项1 :Internal Clock 内部时钟
选项2 : ETR2 外部触发输入(ETR)(仅适用TIM2,3,4)
Prtscaler (定时器分频系数) : 7199
Counter Mode(计数模式) Up(向上计数模式)
Counter Period(自动重装载值) : 4999
CKD(时钟分频因子) : No Division 不分频
选项: 可以选择二分频和四分频
auto-reload-preload(自动重装载) : Enable 使能
TRGO Parameters 触发输出 (TRGO) 不使能 与本节无关,之后做详细介绍
TRGO: 定时器的触发信号输出 在定时器的定时时间到达的时候输出一个信号(如:定时器更新产生TRGO信号来触发ADC的同步转换,)
这两个为定时器主从模式配置,很少用到,我们用不到,所以全部关闭
使能定时器中断:
定时器溢出时间:
这里我们 arr=4999 psc=7199 Tclk=72Mhz Tout = (5000*7200)/72 us = 500ms
4项目文件设置
1 设置项目名称
2 设置存储路径
3 选择所用IDE
5创建工程文件
然后点击GENERATE CODE 创建工程
配置下载工具
新建的工程所有配置都是默认的 我们需要自行选择下载模式,勾选上下载后复位运行
函数讲解:
HAL_TIM_IRQHandler(&htim2);
定时器中断处理函数 在stm32f4xx_it.c的 TIM2_IRQHandler()定时器中断服务函数中
这个函数的具体作用是判断中断是否正常,然后判断产生的是哪一类定时器中断(溢出中断/PWM中断.....),然后进入相应的中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
在HAL库中,每进行完一个中断,并不会立刻退出,而是会进入到中断回调函数中,
这里我们是使用定时器溢出中断回调函数
void TIM3_IRQHandler(void) 首先进入中断函数
HAL_TIM_IRQHandler(&htim2);之后进入定时器中断处理函数
判断产生的是哪一类定时器中断(溢出中断/PWM中断.....) 和定时器通道
void HAL_TIM_PeriodElapsedCallback(&htim2); 进入相对应中断回调函数
在中断回调函数中添加用户代码
你也可以在在stm32f1xx_it.c中找到中断回调函数
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
例程:
定时器溢出时间为500ms,LED点亮延时500ms闪烁
在main.c主函数上方初始化使能定时器2
/* USER CODE BEGIN 2 */
/*使能定时器1中断*/
HAL_TIM_Base_Start_IT(&htim2);
/* USER CODE END 2 */
在main.c主函数下方添加中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static unsigned char ledState = 0;
if (htim == (&htim2))
{
if (ledState == 0)
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_SET);
ledState = !ledState;
}
}
上一篇:HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)
下一篇:【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)
推荐阅读最新更新时间:2024-11-10 02:41
设计资源 培训 开发板 精华推荐
- MC33071DR2G 单位增益缓冲器的典型应用 (AV = +1)
- LTC2953IDD-2 电压监控器的典型应用电路,用于在 40V 电源瞬态条件下工作
- LTC1727IS8-5、3.3V 和 5V 三路电源监视器的典型应用
- MIC2601YML EV,用于有源天线的 18V DC 到 DC 单输出电源的评估板
- 充电电路板
- 一转四集线器
- LT6656BCS6-3、3V 微控制器电压基准和稳压器的典型应用
- 使用 Analog Devices 的 LTC1143LCS-ADJ 的参考设计
- LT8609IMSE 1.8V、2MHz 降压转换器的典型应用电路
- 基于AS5147P的ODrive配套磁编码器_pro