欢迎光临散文网 会员登陆 & 注册

STM32Cubev6 TIM 定时器中断

2021-02-13 01:56 作者:僚机Wingplane  | 我要投稿

工作环境:

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


STM32Cubev6 TIM 定时器中断的评论 (共 条)

分享到微博请遵守国家法律