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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-16 18:17
软件设计:: M, v6 n: I1 _9 q
以下内容只涉及核心部分代码,变量的设定以及头文件的包含等略。* p/ ?9 I$ i0 o  Z$ ?) G0 K
需要创建bsp_usart.c、bsp_led.c、bsp_systick.c等文件。
' n4 j6 l( d. ]& ^

1 t, h6 M) u% A5 ^& [编程主要步骤
. C& f, M! I1 n% E  L; f" l) Q, ^一、使能RX和TX引脚GPIO时钟和USART时钟;" q) r( A# ]* h2 @9 M8 A

$ t2 n7 S, o  m) A2 j" d二、初始化GPIO函数;, u& B) d# |0 ^# t
. ?6 l; `0 d( M* D1 v7 z! p

' Z' W* ]  W2 m+ Y2 F2 R- v注意点:' A+ ?6 H" A, P
1、将TX的模式配置为GPIO_Mode_AF_PP(推挽复用,针对串口输出)+ X/ d. m' a' T  g: ^% r% c
# ~, P1 Q+ w& d$ D) e
将RX的模式配置为GPIO_Mode_IN_FLOATING(浮空输入,针对键盘输入)0 L; x5 `, ?" t6 N9 ]
. a! Z, T: j1 ]9 X5 R! A+ j2 |1 ^% i

1 E/ I( z) c3 ]/ z! ^9 `三、初始化USART函数;
! T9 N8 q& O0 T( L% ^3 M
% c" l) _' D& O5 A, Z2 a( g; m注意点:9 b1 F% @9 X. l, |$ m! w
1、配置工作模式,收发一起& q( P' L6 O$ W% I! a
2、最后需要调用使能串口函数USART_Cmd();, n" K3 ~# Z: m9 h  M( v( u
  K# k( {* c& r$ m
四、初始化控制LED的GPIO口
/ X$ @& p4 d/ n5 M* t0 P( L
- {3 `- Q! S4 X' m" U2 `
五、初始化SYSTICK滴答定时器
- ~+ k/ Y. K6 g
  S) D6 u9 p4 ]5 ?# Y, G- J注意点:要在stm32f10x_it.c里编写SysTick_Handler(void)4 Z  a  U* T* c, G' Q

& \9 y. l/ X( T% a

# ~( ]7 T2 O4 j代码分析! A  F/ j; N5 n  {1 H
1、GPIO和USART的宏定义
9 J6 J+ g, V. V$ H5 j1 U
. i" m5 g" o8 b6 s: B, D
2e9c001c50ba4dfc88792371ad44686e.png
+ o- I. U% _2 G1 D
9 q8 S! ~' U0 ?2 p4 r9 e( T& ]
通过使用宏定义,更方便程序的移植和升级。
& p# Z" a) V3 U6 J# `
$ Y' Y4 T+ n' L/ E- |
1 ]6 t- p$ g/ M! ^
2、USART的初始化配置8 W8 g6 R7 A. @

  ]( W: T5 x7 @7 z
9542c038619a46998fc0a7a452ef2bbf.png
7 T8 {/ M# F( ^/ {
; ?$ U  B$ W& Y' P- C# S
89e632e0700c436bbcb0de072ef9447c.png
+ h# W8 \# P# K0 r% f' d' c+ G- K& q1 @6 i, m1 Q( p
3、重定向printf和scanf函数(在不重定向的情况下无法使用)- U8 l  x$ Z1 v! [8 k# M

4 c, v& u5 t, {( |" ?
528be8bc56664c8a8aba5b08421a8459.png
7 l0 t& ~" D9 D1 |& U6 \# t
2 \# i7 P. m) K$ R
4、向电脑输出提示信息9 ]  Z! g: @$ D* i, _" y7 o

! m2 u4 R+ g1 {! `
7612a8bac3584003862bcaacb3fec884.png
* n" B$ T. G& P, W/ V, Y5 S
- a. k0 w! [( g SYSTICK程序编写
0 X7 i( R9 T9 P
# z9 C( a7 N9 t! [
902bddc8824a488a89572cd839b79322.png   q. A' s* z& M

2 [& f4 \8 m& l. m0 o
依次可设定流水灯的延迟闪烁效果( P  w" Y$ z/ p6 A+ u+ F2 ~7 A
* Z% n3 g' {/ j3 |
; u' t1 d7 D/ o. ^6 \5 C5 m
主函数
3 G( C: [3 a% ~$ Y
7 q; c3 z* U$ n, D
982297d04a474ae6a5681a6034fcd99d.png ; @9 o* i8 O2 r: ^

) w, h  ~3 D5 y, a% U7 T不足之处:由于本人C语言基础不足,使用对于流水灯的实现只想到do while语句,故会选择流水灯模式后会陷入死循环,希望以后能对此进行改进。% p, g0 o# x. u4 o4 q. X/ M2 w
————————————————  G9 @- e8 b0 I8 B
版权声明:谷爱林
% [  E( G/ ~6 R# K4 W如有侵权请联系删除8 P" g: A5 ?( p5 m( u/ v7 s8 U
/ k9 `9 T4 A" {
  Y1 |5 M4 S% @0 L6 V
9a2ba4475daa4f8c9811348d98f8f2c8.png
赞 收藏 评论0 发布时间:2023-4-16 18:17

举报

0个回答

所属标签

相似技术帖

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