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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:
* }2 K% G8 Y" ^* c, h$ k( p7 b0 S" U7 n8 h以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。
+ @' \& {! k, S; ^+ e  f- z需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。
# t- T4 J, b8 L) W9 F7 D- b) `. @8 ~! s
5 i$ d8 s* ~6 \  a6 w
编程主要步骤# n& h3 }& H5 `/ ^4 C/ R: Y
一、使能RX和TX引脚GPIO时钟和USART时钟;, Z4 P8 C6 `) |, F

: A! P( r4 A  G; k- F& T* ~二、初始化GPIO函数;
* L9 }& `5 c) g6 U2 N5 h  ?6 O9 j. a7 D
8 b3 _8 b) |2 m. r
注意点:
, s, d/ B7 Y* X6 p; j! V# U8 J6 e$ V  L- g1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)/ a8 ~5 S8 ^3 C: r
3 Q  C9 i- d2 t# ~+ L  m# m- D
将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入)
3 c# d% i  Y' c$ V2 k+ o5 m
5 z0 m3 V. {# G' \$ n$ g; k
. O5 p  X5 r/ k6 ^' Q! i
三、初始化USART函数;
, m' L" W, z3 e1 Q+ u6 D$ o( m0 Z+ z: H: Y  E: R' ?
注意点:2 i7 n6 }% S' H, E0 S- H( U
1、配置工作模式,收发一起
4 ]7 z( D) @) K: H. Y6 t2、最后需要调用使能串口函数USART_Cmd();. x( I8 u+ \4 b& B4 S( T
: s$ l# d% f4 F$ ]4 v( T
四、初始化控制LED的GPIO口  U" s& e) T; s/ e

, J) f$ u, k  H  H* I; O五、初始化SYSTICK滴答定时器* I7 L, k4 y4 O  m9 t

7 F8 Q2 {# C; J; [注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)& N8 Z  k9 t7 X

& b" r) E, u3 E. d& c  C

1 }3 K$ m  E/ j代码分析2 ~) r/ [0 O9 a  x' i  t
1、GPIO和USART的宏定义9 i. c: a/ X! n8 J. F
: x; V* L2 m# [+ K
2e9c001c50ba4dfc88792371ad44686e.png
. Y) k, ?; C% b# C3 y0 C1 {
' B: r8 e9 T) i9 B) e
通过使用宏定义,更方便程序的移植和升级。( L/ f( R' Q" Z% x

" _7 @5 K+ ^; {* j( |
! \( c6 |( s, u
2、USART的初始化配置
7 f7 G7 C8 P4 F: E& }* V+ N  Y9 i  b" h1 F
9542c038619a46998fc0a7a452ef2bbf.png ! ^. }1 f* C3 {1 W, R7 s/ Y  B

7 c+ Y  t; s/ p* `
89e632e0700c436bbcb0de072ef9447c.png : C$ ]6 U( M+ |, P4 y

& I* X: {3 \9 S0 J# X
3、重定向printf和scanf函数(在不重定向的情况下无法使用)
5 J: w; K9 F* P! l- b& D! x' U/ |; R+ i$ P8 i
528be8bc56664c8a8aba5b08421a8459.png 6 f( t& ~5 m% ]  [
8 ^4 o5 P7 @# {* O; a/ {7 k: V- N! H* t
4、向电脑输出提示信息
" }! _) l+ A0 ?0 p% w4 C- \
* N2 m7 {* r* k, L/ X
7612a8bac3584003862bcaacb3fec884.png & [. O" p: S8 Y. B1 B
1 K" x* `4 `9 {# \1 [5 J
SYSTICK程序编写
& `' l# p+ k& Z. Z3 B
5 Z$ R+ E  w: M7 \, m" v- s
902bddc8824a488a89572cd839b79322.png
" E8 u' Q6 m- y& Z2 k+ h) m3 M' a) a$ Y& ~5 R* e! s6 M
依次可设定流水灯的延迟闪烁效果
9 W. j* x. l; c8 ~* P- k1 p/ [" v, v/ {* Y+ `

- X5 }  r5 ]9 A$ q0 h* y1 _& E主函数1 z3 J+ H5 w; c! G
4 u( x- C4 c" t( W
982297d04a474ae6a5681a6034fcd99d.png . k, _+ `! j) x
# g) g! H' F' L& a" b
不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。. O! \% c5 h) ~! B, n8 K
————————————————) t4 c/ ^2 ~- H8 |( Z
版权声明:谷爱林
5 m( w4 u+ T+ G% U如有侵权请联系删除" T$ n- R9 N- Z& X, F9 K, G

% h6 y  ^$ M( H7 }, c% @/ U% i; l
4 O: t  X7 ^- S1 c4 i
9a2ba4475daa4f8c9811348d98f8f2c8.png
收藏 评论0 发布时间:2023-4-16 18:17

举报

0个回答

所属标签

相似技术帖

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