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

基于STM32串口传输控制LED灯光变换实现经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:
! C8 r7 n; T4 z& {+ L以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。9 j+ V" j0 H6 G) k' L& U: O2 c4 Y
需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。- v2 S. [/ z- |6 _6 C

9 p8 ?- [# U: W' E& P编程主要步骤
/ P$ D3 {7 B9 s/ N3 o2 F一、使能RX和TX引脚GPIO时钟和USART时钟;: c' s3 h! Y$ \: F

3 R! K* h( a# o. z2 J二、初始化GPIO函数;
8 @# ^# Q2 d! b* b- r4 z) P$ Z8 {  H* R4 t* {, Z. w" x5 Q" R
# F0 I) h  h0 B$ V& j4 ]
注意点:; I" z3 z( k2 Z8 v, e% ~
1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)) d( n; r2 l& w; t; T

5 B- F( u! C. D( x将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入)
+ P2 y  K7 l7 X% h
. I* n; y( p6 }+ _* ~) w  b
6 K7 X" k1 K7 t0 Y, t
三、初始化USART函数;
4 e3 y9 O) m$ Y" |+ j+ N4 s/ O2 }. t; b/ u+ {
注意点:
6 z/ A2 |  a' `( X% Y" b$ S1、配置工作模式,收发一起4 w" [, T( I6 n& a
2、最后需要调用使能串口函数USART_Cmd();
# M/ k9 h$ a" q* }" v/ Z  k/ _  k( Z! R
四、初始化控制LED的GPIO口
' ~: I8 D- N" r  B6 p; U" w
4 F$ Y% y& I' x! f( M
五、初始化SYSTICK滴答定时器
2 J2 J3 p( K3 r
$ n, \8 L. L- m  @  \+ m注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)
$ }5 n7 Y4 K8 F2 H& ~% p) L* y- q& K& x, U! {5 \

3 m* H4 {7 v! M5 S8 v) w7 }代码分析1 s* ~+ N" Z9 O* [
1、GPIO和USART的宏定义
8 _$ r! x; l: n1 ^5 n9 t$ J' C' ]0 E, h8 S1 W7 _3 O
2e9c001c50ba4dfc88792371ad44686e.png
" H8 U* ~! p( G4 G7 G, t, u
7 B/ \$ f& M) E0 t* N% l0 ]! H6 d: y
通过使用宏定义,更方便程序的移植和升级。  j: ]+ P* i, j
& j7 p2 a, l) x8 q) R
: J, u2 j6 b* Y" \/ }8 _4 I( J
2、USART的初始化配置
' o) z5 u1 x- R& I/ n6 V' A
5 d, Z7 S7 [" j) Y4 N
9542c038619a46998fc0a7a452ef2bbf.png 1 p3 \; \' Z4 b# q3 c
6 N5 s% B/ b6 f8 `( F
89e632e0700c436bbcb0de072ef9447c.png
- N  v/ G$ G1 i4 S8 u0 R3 W# k5 A
% }5 M) R9 D# M; @  o
3、重定向printf和scanf函数(在不重定向的情况下无法使用)" l# Z! p! z5 o

+ z6 Y. C+ l9 @' x9 r4 r9 w6 C
528be8bc56664c8a8aba5b08421a8459.png
" f: D$ J+ E% T* S' w; |: ~
, Z% \$ a/ G3 k5 D& M
4、向电脑输出提示信息
) D6 {& c2 z! _. v. }" A9 i: M- s5 V: F2 c( ^6 _
7612a8bac3584003862bcaacb3fec884.png
( l$ V$ m3 |7 D! m: V1 X; {2 n' W( j5 i# V* J5 A
SYSTICK程序编写% e" N; t, F8 M& O& W0 O
* K. C0 S$ T9 k3 U1 M
902bddc8824a488a89572cd839b79322.png
! a$ F% E# ?1 H2 Y/ `/ E8 ?7 D# {+ X5 ^( I# F0 w
依次可设定流水灯的延迟闪烁效果1 V# {2 ~3 ?* m+ A6 C
! m% ~- _2 i* ^8 ?' O

8 s1 K. ?2 {1 R; T" |/ k主函数, m1 D7 w3 s8 i/ Q) y

& B2 {# @: t! k/ Z: z8 A- ]
982297d04a474ae6a5681a6034fcd99d.png 4 C' f* T4 d) s% L6 A# P
& l; {: C) F/ i
不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。
* a4 c7 Q5 s  ?1 Y2 }————————————————
+ N" O$ T( Y- ]0 z+ H; ~版权声明:谷爱林
* C" A: @' ~% |. v& H, J( E如有侵权请联系删除" g# C* K9 M0 D% I# |" L6 D! {
' X7 j+ p7 p" y1 T

/ g' W& `; X8 v. D; U
9a2ba4475daa4f8c9811348d98f8f2c8.png
赞 收藏 评论0 发布时间:2023-4-16 18:17

举报

0个回答

所属标签

相似技术帖

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