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

STM32CubeIDE开发M4—使用PWM实现呼吸灯功能

[复制链接]
STMCU小助手 发布时间:2022-8-27 14:31
一、新建工程& F. |" Q- H8 d7 n
+ V2 g* N% ~* f, \
二、配置时钟/ z( m1 b1 \5 Y0 P: n' F2 G/ N
我们需要配置MCU的时钟,点击【RCC】,在【High Speed Clock(HSE)】中选择 【Crystal/Ceramic Resonator】, 也 就 是 晶 体 / 陶 瓷 晶 振 类 型 ,
3 W9 j" n5 ?, K2 V  E3 W 20200925183911458.png ! K5 x/ b  A' U0 b4 q3 c

7 Z. O, u5 I; k4 e: X2 q/ ~3 i然后时钟树配置如图,即MCU的主时钟配置为209MHz,同时定时器时钟也是209MHz;
) Y$ s0 i( T. O2 P) J8 n
$ `) ^1 v. f- c$ L( v$ G2 T% M" Z! ` 20200925184311582.png
4 }# M! g, J. Y' a* h
( b# s  l' J" D7 u3 k$ j接下来设置定时器,首先将PI0设置为【TIM_CH4】,然后点击TIM5,勾选【Cortex-M4】,将通道4设置为PWM通道4输出,接下来设置预分频系数为208,自动重装载值为999,然后输出比较极性为高0 Q% E! d. t4 O' S7 e
! _8 y2 x$ b( Y: V: O! g" G
20200925195716812.png # j. V7 F2 g6 ]! r( C- l6 c

7 u7 G+ n/ C) r& d, X0 F三、生成代码9 M6 T4 j( S- J0 N. A0 Y( O
点击【Project Manager】->【Code Generator】,勾选“ Generate peripheral initialization as a pair of ‘.c/.h’files per peripheral”,让外设初始化代码单独生成
+ b$ R* X  Y5 k) [3 \
$ t3 w$ \, Q- H 20200925185352116.png 1 v9 G! v0 u# s6 n/ t

0 A* ?7 j0 a# z* ?" m! l7 ?7 Z这样配置好后就可以点击生成代码了2 ^$ K# y* N3 ]) C8 _
  G. Z9 O* ?* M5 r& J! y
20200925185506889.png ; |' c* g/ m5 i
. z- }& @% N& m- A; t& t
四、编写程序,实现呼吸灯功能
2 ~- E2 l" K4 J2 S5 N1 U( y首先我们需要启动PWM,
, ?% Z' d- y9 ^6 h, e/ Z1 s. E& W
/ m7 V1 b8 x1 O
  1. HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_4);
复制代码

/ ~5 n: B9 W! f8 v2 v3 J 20200925185833922.png 2 t/ t4 I% C# K& V& ]3 ]* n

# a, E7 d8 f0 |' |7 ]( J# o接下在while循环中编写如下代码,完成呼吸灯功能
  1.         HAL_Delay(5);$ Y0 X+ K) b9 a& k. z
  2.         if(dir) pwmval++;                                // dir==1  pwmval递增; i6 }0 u. R9 {9 c
  3.         else pwmval--;                                    // dir==0  pwmval递减
    ) e  x2 Z; B9 A. ^1 C5 |5 ~. k
  4.         if( pwmval>500 ) dir=0;                        // pwmval到达500后,方向为递减+ g( I. G  p  f. I5 n# O" @3 P( l( z
  5.         if( pwmval==0 ) dir=1;                        // pwmval递减到0后,方向改为递增4 P& @9 u4 G3 M" u+ `& _, t  [
  6.         TIM5->CCR4 =  pwmval;                        // 修改比较值,修改占空比
复制代码
4 I$ j+ Y) i% M/ p
五、编译工程,上传到开发板- [' [/ U& m+ \; x8 `) J; q$ C, n9 w
编译工程,将生产的二进制文件上传的开发板,可以使用以下命令4 D. G" E( ~+ m

1 K( b' ]( H" Y5 M
  1. scp STM32MP157C_Prj_CM4.elf:/home/debian
复制代码
  X! N$ v: h) v( m0 \0 z% ~: T: C& X
然后将该文件复制到/lib/firmware文件夹下,注意,需要在root用户下
/ c! ~+ W$ @, s& _( @然后使用如下命令加载到M4内核启动:9 j. ~$ d8 @6 F- `3 G. U4 ?& o
: p( O) Z/ F$ E; W/ o# ^
  1. echo STM32MP157C_Prj_CM4.elf > /sys/class/remoteproc/remoteproc0/firmware" d  h/ F' S9 U5 G% r
  2. echo start > /sys/class/remoteproc/remoteproc0/state
复制代码
" R( `. v, i; m. L
使用如下命令停止
7 C5 y# l* @  R: u- o$ t
9 a9 B0 X7 j; `1 X
  1. echo stop > /sys/class/remoteproc/remoteproc0/state
复制代码

9 @% R2 x; W4 {8 ^# ~4 x5 ~3 u1 S实现效果如下- E7 z+ x& }0 C- D/ s7 t
* S6 w0 C, q! k, G: R: s7 I
20200925202142359.gif
+ q  B  U) V+ U# k% [0 y
  S( e8 R3 R  I, a0 x————————————————
. o6 o8 F' d! n' h$ n" T0 g转载:Willliam_william+ i. s" y  F' B, h
  L7 K* I6 d9 w* K

7 Z! O- V% \9 K; Y" m
20200925191720223.png
赞 收藏 评论0 发布时间:2022-8-27 14:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版