STM32Cubev6 TIM 定时器中断
工作环境:
STM32CubeMXv6
Keil5
因为定时器和时钟有关,所以我们需要先配置时钟,打开左侧的下拉框System Core,点击RCC选项;

我选用的是8M的外部高速时钟(以实际情况为准),在下方的配置框中更改High Speed Clock(HSE)为Crystal/Ceramic Resonator;

配置HSE为8Mhz,APB1为54Mhz;

因为我需要配置一个1ms触发一次的定时器中断,我们先通过芯片对应的datasheet查到TIM6是在APB1上的,我们通过RCC配置它为54Mhz(最高),根据公式
Tout = (PSC+1)* (ARR+1)/Tclk
得到预分频值为0(实际填入需要-1),自动重载值为54000-1=53999,允许自动重载;

对应datasheet的查找方法


再打开左侧的下拉框System,点击NVIC选项;

可以在Priority Group中选择中断优先级组;

勾选TIM6 global interrupt,DAC1 and DAC2 underrun error interrupts开启中断;

设置完成后
点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;

打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral;

最后点击右上角的GENERATE CODE按钮后生成代码。
生成代码后打开工程文件夹,用Keil5打开工程。

编译,为了使得我们的代码尽可能解耦合,所以我们在工程文件夹中新建一个user_tim.c和对应的user_tim.h文件,在这个.c文件中我们写入以下函数
在对应头文件user_uart.h中写入以下内容
在主函数的开始include我们的user_uart.h
然后再在主循环里加入中断标志位检测
好了,现在我们就可以在main里用定时器中断来完成业务了
参考资料:
STM32F7开发指南-HAL库版本_V1.1
HAL库教程8:通用定时器的使用 https://yatao.blog.csdn.net/article/details/89165205