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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:; x" \" }" }7 ^" R% C
以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。8 N. G/ B, f; z
需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。. y; Z" `5 w, l7 N! ^2 I
; s; J. g" u+ a( G# p/ K
编程主要步骤
. C- l# _" X% a0 P- S. U一、使能RX和TX引脚GPIO时钟和USART时钟;" t# Z6 a% g$ I5 ?

: X3 b* U6 E! G3 n* ]7 T3 K/ M6 T二、初始化GPIO函数;
2 [( ^2 ]) ]& h
6 A0 }: D- n4 c+ v/ D4 j

; d% R, E* A- O! R! Q4 X注意点:
9 q& R7 ~+ A" y% V& I  Y1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)0 M, F- F2 c0 o1 t5 J" e

7 O1 A- t9 m4 j) q4 V将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入): j1 q' X* P% \9 u" T& ~( R- \* ^

8 r4 X) d9 l2 m6 A8 X
% p( W, V; Q, P0 Z" w8 x
三、初始化USART函数;
4 B8 h/ k! H! K
% Y% M* I1 V2 y9 n# r$ G注意点:
2 _& i; S- r. f* z, b+ H1、配置工作模式,收发一起
" x. k7 I$ U& R6 m& v7 _' [2、最后需要调用使能串口函数USART_Cmd();  t+ \/ |# \) H/ ^
5 ?) O% ]' ?6 Y9 P$ R( ~
四、初始化控制LED的GPIO口
8 r; T7 j- y- C( M

  h# Z8 J$ I" t五、初始化SYSTICK滴答定时器0 [9 f4 J# d2 U5 z5 S3 {
' `+ F5 Y& ]3 P: \& }8 _# T
注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)9 V5 E- Z" w9 y# z- `0 q

) h7 J- f$ f- J+ P, Z
, e& @+ s9 i$ _
代码分析
% a3 P" b, Y- w  b) E1、GPIO和USART的宏定义: z/ X4 C, }2 L1 {

$ p6 `) P% E" u9 [1 L) u
2e9c001c50ba4dfc88792371ad44686e.png
; ~6 D6 ]. ~" F* ^" e
2 {# t& ~+ ^+ G* E0 y
通过使用宏定义,更方便程序的移植和升级。
5 T! Q+ b+ e# \- X5 s/ L) w- X
" o: h! K1 w1 z* Q4 W; J
- p1 C5 I- U0 U( T+ X: M. }/ F
2、USART的初始化配置/ v8 o) e# b5 s) _# s
5 _+ S) y# U8 U% d# ^9 f
9542c038619a46998fc0a7a452ef2bbf.png
% v1 ]9 D' q5 p! B- _( ]' k# h9 `  K% j1 u& O4 x
89e632e0700c436bbcb0de072ef9447c.png
" o; N6 b2 {% J$ w) U; b% ?
' j' \( m# j! J1 u1 Q! d9 O
3、重定向printf和scanf函数(在不重定向的情况下无法使用)2 E) h/ m% n2 S# E5 \
3 ^, K9 ~- w! z# b& S% k
528be8bc56664c8a8aba5b08421a8459.png
3 ^) x/ u. E( d2 J6 Z0 x# U) H% B4 k$ D  ~

; n6 S9 E1 H0 _2 ^: r 4、向电脑输出提示信息4 V: ~* K! ?7 v& D) E7 P3 L+ D
+ D+ O& j0 y2 I  Y" A( m& V" `
7612a8bac3584003862bcaacb3fec884.png
! f: e' \# y: @
. A+ U# c* H3 ]+ W SYSTICK程序编写
; [$ t1 P. E! b0 v; u6 D* B: o& d  d: C
902bddc8824a488a89572cd839b79322.png + r6 H( m1 a1 a8 R: a

3 H! f  I8 e& X' O0 {3 {8 X
依次可设定流水灯的延迟闪烁效果  V" c9 i/ U0 H

/ T5 ~/ L* F$ V6 |) f/ [/ U) P
, ~0 T2 ~9 z( g# l  P3 Q. X
主函数9 j; e6 g' l" y0 q. c2 `+ ?. z
- ]& F1 ~* I' N
982297d04a474ae6a5681a6034fcd99d.png ) e; P" B; c2 c& K

1 M# T$ Z8 U3 u2 Y+ }0 G+ @# p" a4 O7 l不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。
- y5 L9 F. x. }; h! N* f————————————————# r# a+ ?' g$ }* V( K
版权声明:谷爱林7 T) |; Y/ ~9 ?1 P( d) i+ S& r
如有侵权请联系删除( W- L/ O$ ]( S# ]4 [1 |3 B5 T7 z
2 p  D) A) u2 b( s

$ @2 y- a3 R! W7 J  r( t3 ?
9a2ba4475daa4f8c9811348d98f8f2c8.png
收藏 评论0 发布时间:2023-4-16 18:17

举报

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