STMCU小助手
发布时间:2022-4-7 16:37
|
实验内容:使用基本定时器,实现LED灯以1S间隔进行亮灭切换。 一、原理图
二、 CubeMX配置 Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。
Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。
Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)
Step4.配置时基以及定时器中断。
到这里关于定时器参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。 三、添加功能代码 首先在主函数中开启定时器,并使能定时器中断(更新中断),并在while(1)循环中添加一个判断语句,在定时器中断1000次以后,进行LED灯电平的翻转,并将中断计数清零。
回调函数,主要是用来计录定时器中断的次数,与while(1)循环中的判断语句相呼应。从而实现定时器计时1S,LED灯状态切换一次的效果。
定时器注意要点在于时基的配置。 这里我们先了解几个参数和概念。 定时器的定时时间等于计数器的中断周期乘以中断的次数。 定时器的时钟:TIMxCLK 计数器时钟:CK_CNT 预分频数:PSC 定时器周期: ARR( 注意:这里的周期指的不是时间而是计数个数!!!计数器能计数的最大数值,有时候这里很容易混淆 ) 计数器的时钟频率等于定时器的时钟频率除以预分频数: TIMxCLK/(PSC+1) 计数器计一个数的时间等于计数器时钟频率的倒数: (PSC+1)/TIMxCLK 产生一次中断的时间(中断周期)则等于计一个数的时间乘以计数的个数(定时器周期 ): (ARR+1)*(PSC+1)/TIMxCLK 如果在中断服务程序里面设置一个变量 time ,用来记录中断的次数,那么就可以计算出我们需要的定时时间等于: time*(ARR+1)*(PSC+1)/TIMxCLK |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
2025软件工具兔哥知道
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
微信公众号
手机版