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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:. f6 v9 T& @/ c
以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。: F/ h5 y6 P+ o
需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。
0 p/ p4 f" n: a* ]  ]3 g
1 i% G. B0 U5 B; I7 U( y
编程主要步骤
4 F6 E$ A9 I! K& o5 z3 [一、使能RX和TX引脚GPIO时钟和USART时钟;& m* f& q, M# p# E
5 `: s1 U) Y0 c/ o8 n& l$ m
二、初始化GPIO函数;- j* p9 ~1 t8 J

' }  N( E$ C9 Z4 ^$ G( l# F3 e4 W
9 U# Y0 ?0 M/ q
注意点:  Q# [. U. t5 B2 j9 U) z
1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)- `6 E+ U9 D4 X( x9 ^! C" h
9 P' q; w5 o. \* s6 h6 n' v
将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入)
$ V/ C# q3 b9 v5 I$ P( o8 Q; }# b: J0 Y8 v6 h" P% S9 h. m

0 l; u. M: B# a( a% V三、初始化USART函数;  v# f/ ^- Q) I* g% ^2 n% {. i
/ ]7 f+ }: A% S/ [
注意点:
6 I9 W& T+ m: O* j( x1、配置工作模式,收发一起) ?, g0 p8 s- ?/ F
2、最后需要调用使能串口函数USART_Cmd();
8 ~' c1 p$ X* X& R' w% v9 L8 ?( `. r. |- u
四、初始化控制LED的GPIO口3 P7 c. t; e3 P& R" K' f) I

% R5 B) `# S; a$ Z, `五、初始化SYSTICK滴答定时器
$ b9 |- W+ B3 I7 E; s/ C
5 s1 s! @; C, o# u, l注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)
1 }) Q# A3 {% ~3 s$ ]9 I9 `* @* V, N2 T

7 }9 H+ ?2 ^1 n; b9 G' L2 w, Q& U  Y代码分析
' u: t+ v# {1 W5 f$ V1、GPIO和USART的宏定义9 O5 b  J$ @6 x2 x) ^# G

* i3 T" E( X* Z. [* m  e
2e9c001c50ba4dfc88792371ad44686e.png
: ]$ w0 H& q7 K  d
/ A5 V8 J3 h: C4 v' n( S
通过使用宏定义,更方便程序的移植和升级。
7 K( |) L# D, \" E; C  i+ B0 T" e& y5 J( \3 k% I- g3 s
# l$ ?3 ]) u$ \! c! w
2、USART的初始化配置
& e3 v- _& ^/ K- k
) f1 O6 Z$ O! B
9542c038619a46998fc0a7a452ef2bbf.png
. O4 i- J* m. ~7 t1 Q8 V2 m7 A5 G( X+ m5 a5 d
89e632e0700c436bbcb0de072ef9447c.png 3 W2 T* s: N0 a! X; _/ e$ o
0 Q8 D# z4 k+ I' J- z/ s, P
3、重定向printf和scanf函数(在不重定向的情况下无法使用)4 j+ T) t, H( a, P2 P
) q0 w( ^! r! s; n( q( [/ [
528be8bc56664c8a8aba5b08421a8459.png 8 m& z9 d6 w# u1 z$ M7 y

( l1 s/ j" W( Z4 A3 p 4、向电脑输出提示信息; q; r, _7 c: ^9 {6 M  L
9 f; t& e8 V6 c% s; v& x
7612a8bac3584003862bcaacb3fec884.png
! x" ^4 V0 w2 m$ @  k/ |
9 H7 `( b( A1 i SYSTICK程序编写% X( F# z" K2 |  J( m  I' @
/ b& {: g/ V/ D1 `
902bddc8824a488a89572cd839b79322.png ; ]' @6 ^! \# {) ]1 u
8 ~7 f: ?' u* x, W- g) X
依次可设定流水灯的延迟闪烁效果
; g4 y# {$ K  k# V- e; x* H4 ]$ f4 T
8 b% L, @2 V) ]0 n  a

" r" x9 n3 w! c  J! N主函数
* M$ [7 q& R' J( j# f& o3 m2 {0 ~) K( Z
982297d04a474ae6a5681a6034fcd99d.png
6 c1 B6 Y0 f2 Q; Q% }
/ q' z0 h  n# m$ Q不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。: ~0 l9 {) G: l: q
————————————————( {6 c5 ?9 p" ]0 h1 m6 h7 L
版权声明:谷爱林! t! }/ `( S& T. G* r7 b
如有侵权请联系删除% b* M1 k6 Z! j; g/ ^

% p. P: h; G: Z) j6 k1 H6 c* q* \8 [( y& K. Q% x/ ~
9a2ba4475daa4f8c9811348d98f8f2c8.png
赞 收藏 评论0 发布时间:2023-4-16 18:17

举报

0个回答

所属标签

相似技术帖

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