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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:
% t. [0 U6 Y1 }0 o, B3 i以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。
4 |+ g7 h# T3 b& \. p' s# |: V: N% F需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。
9 H- j0 D9 o" \0 n: n

1 O$ s5 P" a$ L0 b8 n* T编程主要步骤; l* k1 [" ?/ J4 Q5 D
一、使能RX和TX引脚GPIO时钟和USART时钟;: p' R! w& c. G, e$ v) z: E
+ @* v) o4 t8 B3 i8 b3 X3 u
二、初始化GPIO函数;; }5 h  B7 K+ I+ K  t6 o/ n  |
0 y- I8 R, H+ Z1 U9 t1 L) I* T
) d; }* {0 K5 C+ G
注意点:
4 X) m+ r7 U5 ?8 l8 Z) m1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)
. J! H6 R$ c/ B
! M1 W2 w8 D$ l& B) K6 p将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入)
: c" d& _# ~: s0 u% U% M. G  z" Q; t7 T3 v( Q6 F
( H1 C$ ~! l4 H
三、初始化USART函数;
5 x' }0 [! }1 H& b) _- N
# i  q4 U! A1 \* o( z, ~) z注意点:' ~' o- ~, m6 t# H2 G" a
1、配置工作模式,收发一起
( R- z0 g2 g6 I! i% y% U/ z2、最后需要调用使能串口函数USART_Cmd();; n9 i0 \* u" l0 W' X2 g
/ `  Z5 E7 c, z: Y) N: C
四、初始化控制LED的GPIO口0 N( }, F: L; E0 E; k

! T* B, q( x9 G五、初始化SYSTICK滴答定时器
( K; |; @2 ~$ v+ e9 r. j8 R7 T" t. _; v7 @8 b
注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)' w# B2 ]# d% R( E. A# B

1 E# o/ g4 \2 z9 I

8 m- `; b" d( [代码分析. d' ?3 Z3 n# u1 K3 U% y# Y6 z% Q
1、GPIO和USART的宏定义
6 h6 [1 f8 i0 B5 n) }' I
, L" a3 C: b2 ~5 d) @% V3 q
2e9c001c50ba4dfc88792371ad44686e.png
3 i, C4 Y% `+ y2 p" X) o
4 H0 e$ g0 b) C2 w/ a1 V
通过使用宏定义,更方便程序的移植和升级。
$ ^6 d+ f; q! Q$ ?+ i% g
% @* E* H' ?! Q' Q0 y
$ s3 |, E" G2 H/ p1 {  q9 a9 Y0 f  c5 U
2、USART的初始化配置
' U3 G7 z/ L0 t/ @& F+ c9 D! H
: C! k  c4 n: E; n3 Z
9542c038619a46998fc0a7a452ef2bbf.png
4 D) I' a8 e( j9 p$ J9 W( S  l& C9 V' w, t- a( U1 k% J
89e632e0700c436bbcb0de072ef9447c.png
4 E! P9 W5 P8 A$ l8 t$ l& p# V
: F5 B9 E3 R3 `0 T2 ^9 @! {6 t1 n- I
3、重定向printf和scanf函数(在不重定向的情况下无法使用): a) l. ]* A' b& o" n1 [# A( Z8 [
9 \! R3 ^9 H8 V; p: c3 E
528be8bc56664c8a8aba5b08421a8459.png
: v/ V3 I1 a( n

" O# [3 Z, b# \7 N! l& o+ e# i& i5 F 4、向电脑输出提示信息8 U& a9 }. M4 j. V* q; M
* p! Z" D; M: U! u' k" j" G! {1 z# Y
7612a8bac3584003862bcaacb3fec884.png ; _% a9 }0 ?4 G2 [

1 }7 ~  r; q8 ^ SYSTICK程序编写0 W7 j8 q. l( C4 s. E6 F: h
' B: A+ f( e# Q) R9 U" G
902bddc8824a488a89572cd839b79322.png & p5 p+ {+ f5 Q: j- `7 q

* `/ N' I% y' T+ T0 Q# I
依次可设定流水灯的延迟闪烁效果& H: ^" f, m2 V) i  b% _" ]) ]# [) r

& h! x$ r& G9 E
. `# T. b! u* V. i
主函数
' J$ t; B# ]" r6 x. P6 l) o, ~, J0 a# i" v1 S. h* {/ c6 k# B
982297d04a474ae6a5681a6034fcd99d.png
( v0 G' S5 g$ `, T! ^
1 G) h9 r: p6 i6 S6 W3 e( o不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。4 w3 p4 F  C- P& G4 d' K) a3 \
————————————————
2 C: k5 u) P5 B6 y, M版权声明:谷爱林2 Q) x9 y) M  K; X4 {$ q
如有侵权请联系删除
% j2 A3 ^7 ?+ W6 i) ^# C7 A: B, d3 Z5 v' |( k0 @' b
0 F' `9 C/ i# ~" {
9a2ba4475daa4f8c9811348d98f8f2c8.png
收藏 评论0 发布时间:2023-4-16 18:17

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版