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

【经验分享】STM32cubeMX教程-定时器实现定时1秒LED闪烁

[复制链接]
STMCU小助手 发布时间:2022-6-26 13:54
    软件:
STM32CubeMX V4.25.0  
keil_u5
    固件库版本:
STM32Cube FW_F1 V1.6.1
    硬件:
OneNet 麒麟座V1.4
    在STM32CubeMX中新建项目,选择正确的MCU型号

VL@T1M1X}C1BSB9Z0PEZJDE.png

    首先设置RCC和SYS,如下图

(O3_{$B5IFGBMM{7A3PAURH.png

    启用TIM1,选择内部时钟源(Internal Clock)。

94O0N4L$(EQC{3{WT]UT{WB.png

    根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图

AL($H`{O@MURB_H8W(@0UM5.png

    GPIO设置 PC7和 PC10为GPIO_OUTPUT, (这是麒麟座V1.4的四个LED管脚其中的两个)

[NWP5[0S5)4N3WZP]{Y[(G3.png

    设置其中一个默认为高电平,另一个默认为低电平,User Label分别是LED1和LED4。

RI[Q0CPNE[Y~(S%ZEK254O2.png

    设置TIM1,启用中断

EL]VPH1JW[7)VLN3MI}S65S.png

    由于TIM1是挂在APB2总线上。在文章最后会描述判断当前计时器在哪个总线的方法。查看时钟树我们知道APB2当前频率为72MHz,我们希望每秒钟发生2次中断,就把预分频系数设置为36000-1,自动重载值为1000-1,得到的计时器更新中断频率即为72,000,000/36000/1000=2Hz。此时定时为0.5秒,若要实现定时1秒,则将1000改为2000

2R%ICRIS@`4M$]E~493XJ]H.png


    点击任务栏的生成代码图标

QM5FAJ5)RE$~Y]L5N3]HQ_A.png

    生成工程,并添加相关程序。
首先,在main.c程序中添加(放置于定时器配置之后)开启 TIM1计时中断。
  1. /* USER CODE BEGIN 2 */
  2.     /*使能定时器1中断*/
  3.     HAL_TIM_Base_Start_IT(&htim1);
  4.   /* USER CODE END 2 */
复制代码

其次,在 tim.c文件中添加定时器中断完成回调函数。
  1. /* USER CODE BEGIN 1 */
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
  3.    
  4.     if (htim->Instance == TIM1){
  5.         
  6.         /* Toggle LED */
  7.         HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
  8.         HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
  9.     }
  10. }
  11. /* USER CODE END 1 */
复制代码


收藏 评论0 发布时间:2022-6-26 13:54

举报

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