仿淘宝网站模板,网站被301跳转,asp做网站安全性,铜仁公司做网站STM32H7开发笔记#xff08;2#xff09;——H7外设之多路定时器中断 文章目录 STM32H7开发笔记#xff08;2#xff09;——H7外设之多路定时器中断0.引言1.CubeMX配置2.软件编写 0.引言
本文PC端采用Win11STM32CubeMX4.1.0.0Keil5.24.2的配置#xff0c;硬件使用STM32H…STM32H7开发笔记2——H7外设之多路定时器中断 文章目录 STM32H7开发笔记2——H7外设之多路定时器中断0.引言1.CubeMX配置2.软件编写 0.引言
本文PC端采用Win11STM32CubeMX4.1.0.0Keil5.24.2的配置硬件使用STM32H750VBT6最小系统板。
本文实现多路定时器中断。
1.CubeMX配置
打开CubeMX新建工程搜索STM32H750VBT6直接双击芯片即可完成创建。
时钟、Debug、Cortex M7配置部分略详见STM32H7开发笔记1——H7基本配置
为了合理使用芯片资源在仅需要定时器中断的情况下可以选择没有输入输出通道的定时器不过说实话这100来个引脚绝对够用但是还是养成一个好习惯如TIM6、TIM7 查找头文件看看TIM6挂载在哪个时钟总线上具体方法直接在Keil中搜索RCC_APB搜索范围设为整个Project然后在宏里找即可
#define RCC_APB1LLPENR_TIM6LPEN_Pos (4U)
#define RCC_APB1LLPENR_TIM6LPEN_Msk (0x1UL RCC_APB1LLPENR_TIM6LPEN_Pos) /*! 0x00000010 */
#define RCC_APB1LLPENR_TIM6LPEN RCC_APB1LLPENR_TIM6LPEN_Msk在时钟树中看APB1的频率 因此未分频的TIM6时钟频率为240MHz。定时器的配置如下 Prescaler预分频系数设为240-1则TIM6的时钟频率为1MHzCounter Mode计数方式这个没啥影响Cunter Period自动重装载值设为500-1则TIM6的中断周期为500us。刚刚PSC设为240-1的好处就是ARR设为T-1周期就是Tusauto-reload preload控制定时器的自动重装载寄存器ARR的预装载功能。如果在整个工程的运行过程中ARR的值会被更改则使能这个寄存器比较好如果不需要更改从头到尾的值都不变那这个就没必要。直接Disable即可Trigger Event Selection如果工程中需要使用定时器生成触发事件来启动其他外设则需要配置。直接Reset即可
然后配置中断点到NVIC Settings勾选Enable即可 同理配置TIM7 在NVIC选项卡中统一配置优先级 左上角Priority Group配置中断优先级分组然后点击优先级即可在下拉栏里改变 2.软件编写
在CubeMX生成的代码中以TIM6为例包括设置定时器参数、设置定时器中断参数、编写中断服务函数还包括初始化定时器。需要自行编写的部分包括启动定时器中断、编写中断回调函数。启动定时器中断要放在MX_TIM6_Init();之后while(1)之前
int main(void)
{HAL_Init();SystemClock_Config();//......delay_init(480);MX_GPIO_Init();MX_TIM6_Init();MX_TIM7_Init();//......HAL_TIM_Base_Start_IT(htim6);HAL_TIM_Base_Start_IT(htim7);while (1){}
}
中断回调函数放在自己创建的.c文件中
// 定时器中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim-Instance TIM6) //300us{// 在这里处理定时器中断事件}if (htim-Instance TIM7) //50us{// 在这里处理定时器中断事件}
}