你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32Cube HAL 定时器中断

[复制链接]
STMCU小助手 发布时间:2022-4-7 16:37
  实验内容:使用基本定时器,实现LED灯以1S间隔进行亮灭切换。

一、原理图

2B[9WHRVIOP4IR5Y8CAY0Y2.png

二、 CubeMX配置

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。

~WL%N[(2B5Y$[S[TH9}ZWCH.png

Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。



6L]2`{S{Z{PDK[0M5$~J)BP.png

Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)

R)((V~6M7$)ZX)9L`4FS{ON.png

Step4.配置时基以及定时器中断。

@E9UG76RQ10_5LxN(ACOT.png

P6UD()](SOI0L$O18_XKV@6.png

到这里关于定时器参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。
三、添加功能代码
首先在主函数中开启定时器,并使能定时器中断(更新中断),并在while(1)循环中添加一个判断语句,在定时器中断1000次以后,进行LED灯电平的翻转,并将中断计数清零。
  1. int main(void)
  2. {
  3.   HAL_Init();
  4.   SystemClock_Config();
  5.   MX_GPIO_Init();
  6.   MX_TIM6_Init();
  7.         
  8.         __HAL_TIM_CLEAR_IT(&htim6,TIM_IT_UPDATE);//清除中断标志位,防止一使能定时器就进入中断
  9.         HAL_TIM_Base_Start_IT(&htim6);//开启定时器,并使能定时器中断(更新中断)
  10.   while (1)
  11.   {

  12.                         if(cnt==1000)
  13.                         {
  14.                                 HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
  15.                                 cnt=0;
  16.                         }
  17.   }
  18. }
复制代码


回调函数,主要是用来计录定时器中断的次数,与while(1)循环中的判断语句相呼应。从而实现定时器计时1S,LED灯状态切换一次的效果。

  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  2. {
  3.         cnt++;//记录定时器中断的次数
  4. }
复制代码

定时器注意要点在于时基的配置。 这里我们先了解几个参数和概念。
定时器的定时时间等于计数器的中断周期乘以中断的次数。
定时器的时钟:TIMxCLK
计数器时钟:CK_CNT
预分频数:PSC
定时器周期: ARR( 注意:这里的周期指的不是时间而是计数个数!!!计数器能计数的最大数值,有时候这里很容易混淆 )
计数器的时钟频率等于定时器的时钟频率除以预分频数:
TIMxCLK/(PSC+1)   
计数器计一个数的时间等于计数器时钟频率的倒数:
(PSC+1)/TIMxCLK
产生一次中断的时间(中断周期)则等于计一个数的时间乘以计数的个数(定时器周期 ):                                                    (ARR+1)*(PSC+1)/TIMxCLK
如果在中断服务程序里面设置一个变量 time ,用来记录中断的次数,那么就可以计算出我们需要的定时时间等于:
                                      time*(ARR+1)*(PSC+1)/TIMxCLK


收藏 评论0 发布时间:2022-4-7 16:37

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版