在STM32F1系列中,除了连接的产品外,还有一个计时器,该计时器分为基本计时器,通用计时器和高级计时器。基本计时器和16位计时器只能计数,只有时间,没有时间,没有外部IO。通用计时器是一个16位计时器,可以上/向下计数。它可以定时,输出比较,并可以输入和捕获。每个计时器都有四个外部iOS.Advanced Timer是一个16位计时器,可以用/向下用用光。它可以定时,输出可以输出,并且可以输入以捕获。还有三个相机互补性输出信号。每个计时器都有8个外部iOS。
1.打开STM32Cubemx软件,然后单击“新项目”
2.选择MCU和安装
3.配置Clock RCC设置,选择HSE(外部高速时钟)为Crystal/Cramic谐振器(Crystal/Ceramics Resonant)选择时钟配置,并且配置系统时钟SYSCLK为72MHz,以修改HCLK的值。
4.配置调试模式非常重要,否则将导致第一个录制程序遵循调试器的系统设置,选择调试作为串行线
5.配置GPIO GPIO设置,在右侧图片中找到LED灯的相应引脚,选择GPIO_OUTPUT,输出低级别以点亮,您可以添加自定义标签
选择设置并检查激活
执行特定的参数配置。
PCLK1 = 36m,如图所示,因此计时器时钟tclk = 36*2 = 72m。
计时器溢出时间:
tout = 1 /(tclk /(psc + 1))?(arr + 1)
使计时器中断
输入项目名称的IDE开发环境和项目路径MDK-RM V5,以生成每个外围的独立文件。所有初始化代码均在MAIN中生成。C检查:初始化代码在相应的外围文件中生成。例如,GPIO初始化代码是在GPIO.C.C.Click生成代码中生成代码中生成的。
打开中断服务功能文件,查找TIM6中断服务功能中断服务功能,调用计时器中断处理功能
打开文件并找到计时器中断处理功能的原型。主要函数是确定哪个事件被中断的事件,从哪个计时器生成,清除中断标识位,然后调用中断恢复函数。
/注意:不应修改此功能,当需要回调时,如果需要重建功能,则不应更改HAL_GPIO_EXTI_CALLBACK CORE。
根据官方提醒,我们应该再次定义该功能。这是一个弱的徽标。带有此功能的功能是一个微弱的功能,也就是说,您可以在其他地方编写具有相同名称和参数的函数。编译器将忽略此功能。执行您编写的功能;这是错误报告的定义。当未处理计时器号时,编译器将不会报告警告。实际上,当我们开发时,我们将不再需要中断服务功能。我们只需要找到此中断恢复功能并将其重写,并且此回调功能仍然非常方便。启用了多个中断后,STM32Cubemx将自动将几个中断服务功能集成在一起,并调用回调函数,也就是说,无论如何,无论如何中断,我们只需要重写一个回调字母,并确定通过数字传递的通行设备就可以了。
接下来,我们添加此文件的底部
现在,输入主函数,并在while循环之前添加计时器函数。此处传输的HTIM6是计时器初始化后的结构体。
现在的实验现象是每1秒钟旋转一次LED灯
STM32Cubemx使用HAL库生成的代码:
使用STM32标准库的代码:
对应
对应
对应
应在和平之间添加用户代码,否则下次使用STM32Cubemx重新加工代码时,它将被删除。
?Leung在2021年1月14日写信
?参考:STM32Cubemx系列教程3:基本计时器设备
STM32Cubemx实际战斗教程(4) - 基本计时器(或光)
“嵌入式-STM32开发指南”的第二部分 - 第4章计时器(HAL库)
原始:https://juejin.cn/post/7099681073881153567