STMCU小助手
发布时间:2022-5-5 17:47
|
1 概述7 x4 r+ R/ W B" \6 k8 j, J9 ^6 a0 q% t 1.1 资源概述 开发板:正点原子STM32F103 Nano开发板- f' s) D2 y% d/ l! V CUBEMX版本:1.3.0 MDK版本:5.23/ o- k9 l1 S1 i0 u S 主控芯片型号:STM32F103RBT60 V& `. g! Q x7 p
5 {$ o' z0 I G" E 1.2 实现功能+ H3 Q h, e8 q/ \( {# o 1,LED0通过Button按键实现翻转,Button按键采用中断方式输入; 2,LED1采用定时器方式实现翻转,当计数达到时,状态进行翻转;& @: Y0 O, J0 K4 |3 k0 n 3,LED3采用while函数和Hal_delay函数实现,固定时长; 4,LED6采用PWM进行驱动,PWM设置一个固定的周期和占空比。! E3 I+ B/ c* z* g, ] ' U5 n2 ^) C' W( d* [. M 1.3 PWM边沿对齐和中心对齐1 e/ K; ?, B# [, g% s% A 1.3.1 边沿对齐模式 下图为边沿对齐模式,其中ARR通过cubemx的counter period设置,决定PWM的周期,CCR通过pulse设置,决定占空比。PWM模式1和PWM模式2,为互补的波形,PWM模式1+极性低等效于PWM模式2+极性高。1 j2 ^3 M/ P3 ] U) Q 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为有效电平,否则为无效电平。
4 x" O; U5 E( t ^9 U 1.3.2 中央对齐模式* n; w- b' |& i* ]* _. u9 b% c# c 中央对齐模式如下图,对于高级定时器产生互补带死区的双路输出时非常有用,很方便设置死区时间。- M# r: {2 z" o' Z# a, I% L6 J$ | ~2 l # o" W, u! ~/ Y0 z& {0 r9 j
2 软件开发 2.1 CUBEMX配置. \+ g/ n6 \+ D9 O7 d 1,中断分组设置,抢占优先级设为0,子优先级设为1,2,3。 1 ?# J- H% s2 ^ [3 b( u+ F/ ^
8 k; p7 S, A/ f0 r8 [; \ 2,TIM2设置,设置为向上计数,一个计数的时间为2 r/ w5 u, y' @6 \ 1/72000000*(35999+1)*(999+1)=0.5S & \) K2 \$ M j( o3 o8 N5 A3 c( s5 k
7 x2 k: ~! \. Y' l 定时器2对应的时序图如下, ~: _# O! y: @8 J+ ?$ o0 X - D2 T+ r R* ~/ S
4 n1 ]( N" @* ]! y 3,TIM3设置,采用内部时钟,PWM模式1,CH极性为1。这里频率为 72000000/(35999+1)/(3999+1)=0.5Hz,占空比为(249+1)/(3999+1)=6.25%1 r7 l2 f/ W8 o
# s) d5 m' x4 X: a8 k$ s) x9 I 4,GPIO设置,其中Button设置为中断模式。 7 s% y7 S4 b7 n! I1 S1 m
& a4 l) K) r8 n: N' N: x 2.2 软件代码( x3 v7 R) p5 G$ F 使用CUBEMX生成代码后,会自动对GPIO口以及定时器等进行初始化5 z+ L! G5 f% [ 我们需要在Main函数中开始定时器和PWM . w. L2 x" f! @: B. r6 m% S9 @
在While(1)增加LED3灯的操作. V! g, H3 q h Z( \ # j9 n( e- b. o6 @
在main函数外边设置按键中断回调函数5 d2 E2 d( {% \; ]# [
增加计数器回调函数$ N- g0 G1 I2 S/ n
程序编写结束9 T/ E: M7 H1 Z9 V1 J& g1 a# x ( O+ m: ^0 {9 e 3,实验结果 3.1 仿真结果- Y6 b, `' ?! _( f4 y: e" t LED1(采用定时器)和LED6(采用PWM)的仿真波形如下,时间不太对,但是没关系,不深究,硬件实现的时间是对的。
$ F: Y" N9 }% N9 S 3.2 实物运行结果" |# q/ _( ~) j& `7 C 实验结果与预期相符 5 ?; r" F2 w! T2 ~/ I9 p+ y$ |
5 S9 ^- M% `6 `8 B |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版