STMCU小助手
发布时间:2022-5-5 17:47
|
1 概述 1.1 资源概述 开发板:正点原子STM32F103 Nano开发板 CUBEMX版本:1.3.0 MDK版本:5.23 主控芯片型号:STM32F103RBT6
1.2 实现功能 1,LED0通过Button按键实现翻转,Button按键采用中断方式输入; 2,LED1采用定时器方式实现翻转,当计数达到时,状态进行翻转; 3,LED3采用while函数和Hal_delay函数实现,固定时长; 4,LED6采用PWM进行驱动,PWM设置一个固定的周期和占空比。 1.3 PWM边沿对齐和中心对齐 1.3.1 边沿对齐模式 下图为边沿对齐模式,其中ARR通过cubemx的counter period设置,决定PWM的周期,CCR通过pulse设置,决定占空比。PWM模式1和PWM模式2,为互补的波形,PWM模式1+极性低等效于PWM模式2+极性高。 PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。
1.3.2 中央对齐模式 中央对齐模式如下图,对于高级定时器产生互补带死区的双路输出时非常有用,很方便设置死区时间。
2 软件开发 2.1 CUBEMX配置 1,中断分组设置,抢占优先级设为0,子优先级设为1,2,3。
2,TIM2设置,设置为向上计数,一个计数的时间为 1/72000000*(35999+1)*(999+1)=0.5S
定时器2对应的时序图如下
3,TIM3设置,采用内部时钟,PWM模式1,CH极性为1。这里频率为 72000000/(35999+1)/(3999+1)=0.5Hz,占空比为(249+1)/(3999+1)=6.25%
4,GPIO设置,其中Button设置为中断模式。
2.2 软件代码 使用CUBEMX生成代码后,会自动对GPIO口以及定时器等进行初始化 我们需要在Main函数中开始定时器和PWM
在While(1)增加LED3灯的操作
在main函数外边设置按键中断回调函数
增加计数器回调函数
程序编写结束 3,实验结果 3.1 仿真结果 LED1(采用定时器)和LED6(采用PWM)的仿真波形如下,时间不太对,但是没关系,不深究,硬件实现的时间是对的。
3.2 实物运行结果 实验结果与预期相符
|
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版