在stm32cubemx配置 定时器中断
1.将debug改为2.在中选择内部晶振(有需要也可以选外部晶振)3.开始配置引脚4.配置时钟树(省略)这里我设置72HZ5.最后的两步也是基本配置,可以翻到最后看。
一、基本配置
首先来基本的配置


1.将debug 改为 模拟输出

2.在RCC中选择内部晶振(有需要也可以选外部晶振)

3.开始配置引脚

4.配置时钟树(省略)
这里我设置72HZ
5.最后的收尾设置(前面一期有讲)
正式开始 定时器中断 的配置
以TIM2为例
1.先启动 时钟源

2.选择内部时钟源

3.配置PSC(预分频器)和ARR(自动重装值)
还要用到之前配置时钟数里的CK_INT(即72MHZ)

假如我给他设置成这样:

计算定时器的溢出频率(时间)
频率的计算:频率=CK_INT/(PSC*ARR),在这里就是72,000,000/(7200*10000) = 1
时间就是频率取倒数。就是1s
这里可以解释一下,
为了方便计算,前面的72M ==72,000,000
结果是正确的。
4.勾选NVIC使能。

最后进行后面的收尾工作就完成了基本配置。
二、在keil5中写代码
1.先写启动函数
HAL_TIM_Base_Start_IT(&htim2);


2.然后重写回调函数实现具体的内容
在 stm32f1xx_it.c中找到中断服务函数
跳转到定义

在这个.c文件中找到回调函数
HAL_TIM_PeriodElapsedCallback(htim);

跳转到定义
找到其虚函数,重新编写

复制粘贴到main.c文件中
按照这样的格式写

完成!
=------------------------------------------------------------------------------
其实整个“然后重写回调函数实现具体的内容”就是这个函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){}
背下来也行。
关于“中断服务函数”与“回调函数”的关系补充
是这样的,单片机每收到一次中断,就会进入一次中断服务函数,而在中断处理函数中,我们又调用了函数void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
该函数会间接调用回调函数,来实施相应的功能。
也就是说, 中断处理函数间接调用 回调函数 ,实行内容。
更多推荐


所有评论(0)