蓝桥杯嵌入式——基本定时器编程

本文介绍了如何在80MHz时钟频率下,通过CubeMX配置TIM6定时器,每秒产生一次中断,显示在LCD上,涉及中断处理、回调函数和计数器操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本讲实现内容:在LCD上显示定时器中断的值,每过一秒值+1

基于上一讲ADC12的文件来编这一讲的代码,记得inc和src中的创建

CubeMX配置

打开CubeMX,把TIM6(定时器6)激活

当我们时钟频率为80Mhz时,分频系数给8000,计数器频率 = 时钟频率  /(分频系数+1)

计数器频率 = 80000000 / 8000 = 1000hz , 则计数器周期为T = 1/f = 10*-4次方秒(相当于记一个数花费10^-4次方秒  =  1秒能记10^4次方个数)

我们程序设计每一秒进入一次中断,所以在CubeMX里配置,并使能中断

PSC: 8000分频,配置7999  

ARR:10000重装载值,配置9999

配置中断优先级组,串口肯定能打断定时器,定时器的抢占优先级要低于串口

CubeMX配置完毕,生成源码

修改主代码

复制粘贴源码tim.c里的两个初始化函数到bsp_basic_tim6.c并在bsp_basic_tim6.h里声明

声明变量htim6需要用到extern

因为用到了中断,所以还需要粘贴源码it.c里的中断函数到这次工程的it.c里

在主函数中声明

TIM6一秒产生一次中断,产生中断就跳入it.c的TIM中断函数里

产生中断后进入HAL_TIM_IRQHandler(&htim6);  这个函数里会调用Callback回调函数

如何找callback函数?

从main.h按如下步骤一步步go to 直到hal_tim.h,拉到最下边就能找到

想让定时器靠中断打开还需要定时器函数HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

在定时器中断调用结束后同样需要再打开定时器中断

定义i值来计算定时器每秒+1的数值

每过一秒就进入一次定时器中断,i值+1

到LCD_Proc里实现本章内容:每过一秒定时器的值+1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值