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

STM32G431RBT6笔记之USART

[复制链接]
STMCU小助手 发布时间:2023-3-2 11:43
2f1b02d2c220445e83a27db129947bf5.png
  c/ x5 ^& `" A+ v
; `7 o, G% c" l
d6c4e78798b3496d99c09477b8986946.png # o9 X- }0 g" i

3 t! e+ {0 s' s' I& k+ |/ @/ o: X
1d8c41a1151a4f7ca91648f69ba00e6e.png
" x& h9 M, |( q+ q( k4 W! g
! p5 j7 \! b. X8 v 97fd755916514839bab826845d3d46d4.png " n6 D( [4 L2 n1 Z' j3 T
1 I- _* k9 p. u- L
a0e2a8dbdec84b3cb976f2f88d968b3d.png & Q6 R0 K/ \; d2 @
8 o3 P, x+ @* z  M
2daf9af1368e4e458a2180b83c0c09cb.png : z/ G! A1 H) z' U

% P  n) T% y& D1 g
在bsp文件夹下新建两个usart两个文件,然后再和前面一样的操作添加文件、添加头文件- Q' z% Z  M* c

9 j( p$ i+ P* t& p7 U, ~
几个小细节: \% d1 x' |- F
① msp.c中有需要改的东西8 \: b) N: a$ _3 z( ]5 D
4 B& R& _; i) A7 w, _0 W
eb5a4f1adab146b48abd4e5da6078cee.png ' P5 j3 [% y. |; l/ V: f

7 A& A7 m/ t/ p2 {- m
②底层要添加uart的库文件:8 W; m4 ~, e. j8 b, J. i8 x/ N- {
' H7 ?3 X! s3 h1 I: |# T+ t7 ~
e5dfc9bac5594b72bf0fae357d51f6de.png
8 Y, T; f1 Q9 O$ h* K0 u: D, N6 m
! ?  W( ]: {1 g0 U" L' O③打开uart的宏定义,才能使得bsp_usart.c中的代码不出错
5 }5 g6 W* i4 |- ?+ W, P6 W8 N$ T; V
1bed872a74b8483795e2152a6827c1c2.png ( Q1 d: B, e: J4 x  {

+ D! \. }' _3 A# A3 u* C9 W bsp_usart.c文件的代码书写,去掉复制过来的3个函数中的最后一个函数。复制到bsp_usart.c中( u4 @, Q+ b- a4 D& H% }6 J2 K2 G

. e! Z1 _" H. h$ ^* f# i
da15d0dc9ce245259ba499b5a9bab523.png
& J& ]9 f3 F( B- `4 V7 S$ c- h
) n/ C* f/ [: V* N9 h
6f09e0a3737e4faa89b44de6e0a9afd5.png
- V9 h  a  x) S3 Y
# K4 j$ b* d/ I9 @; A4 v

. t, {, ?/ c& g& n串口中断函数) r: ?: A/ f, H; D8 L" e' x& j' r. u

. `5 h  E$ M$ _. e. P
ea047462b8b74e158deec48656a4b4db.png
" x0 a7 \8 Y" \* \0 v7 {% P3 ?
测试小程序:向串口发送数据能在屏幕上显示出来
" E1 t, I" J% \# D, s# E3 T' z7 Z/ [1 v8 i5 I' }+ h
f2d1dddbe37f4b7d8e7087efd5ffff3b.png * z* m) v( k/ s1 Y4 b
) `$ D, [; k. t; p
  1. void Usart_Proc(void ). s" T0 g) X& \# L$ o' Z5 H
  2. {4 [8 Z$ U; Q& n( k3 [
  3.         if((uwTick-uwTick_Usart_Set_Point)<200) return ;
    2 }6 D5 i8 V9 k/ Q9 }
  4.         uwTick_Key_Set_Point = uwTick;
    7 i+ ?* G1 p; `" ^/ u% x
  5.         2 Z. j: d( {5 `- X- y1 A
  6.         sprintf(str,"%04d:Hello,world.\r\n",counter);
    ! C2 R$ q/ h" `  }7 e
  7.         HAL_UART_Transmit (&huart1 ,(unsigned char *)str,strlen(str),80);: u+ ]- Z% C3 h
  8.         1 U/ C1 R5 M$ ^: i/ u1 T1 |
  9.         if(++counter == 100)
    6 E: X( Y( n' `: ^) k
  10.                 counter = 0;0 o* z6 ~) h) v3 F. `, j$ G
  11. }
复制代码
5 s& X, {+ ]7 K& E5 Y
注意:代码中用到的变量要定义一下7 r: A2 Y9 ]. l1 ~! q" u" n
2 D. @" D9 F  w# X9 `* Y# [
串口接收中断+ ?/ m9 e! s$ w" a9 s( k& V" h, I4 K
5 z! M' C/ N4 V1 T
990f98d444844a6dbcf4e53b32bfd836.png ! h7 S4 y1 c9 g) r

. g" u" t  I- a0 THAL_UART_Receive_IT(&huart1 ,&rx_buffer,1);//串口接收中断函数
" Q8 `" ~8 L& [( b9 q, ~/ y3 \
8 U8 }8 K0 T" k8 g+ K, }  N
266679fab68141cfac0fe9416222a613.png
3 h( R+ k4 N2 r8 i) r( k. a
+ s* {% e0 U1 c  D- n$ a
  1. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    * b" c* {& ^* L# t
  2. {0 G: e; a  K# m4 i% i+ ^
  3.         LED_Disp(0x77);/ M# m4 ^3 p! a
  4.         HAL_Delay (500);$ ^) K9 w7 N% V: |. ?7 j& V
  5.         LED_Disp(0x00);
    4 x9 ~- d5 b1 c$ k4 k
  6.        
    7 }7 C* t: C. a* }% l
  7.         HAL_UART_Receive_IT(&huart1 ,&rx_buffer,1);//设置连续中断产生: H' r" u$ \6 z9 n" U
  8. }
复制代码

- x. ~7 t1 Q% Z: R) F- n 注意:串口中断回调函数中用到了延时函数(滴答定时器),因此一般要把滴答定时器的优先级设置最高,以后msp文件中不用再添加函数了
3 ]+ [5 {8 D! c' P3 X) L. P& r" k7 g- ]
b31fb026afb74884867d91bfa07e2ef7.png
7 \6 ~1 a  t1 H2 E& p: |6 {9 H# x4 t$ S
接着编译,下载程序,当在串口中发送数据的时候,灯就会亮,然后就灭了(回调函数的功能就是这样的),但是下载一次,发送数据只能亮一次,再让他亮只能再下载一次程序
8 [" Z4 {) s5 ]3 G' q————————————————% j9 m4 E4 f8 q3 G3 W
版权声明:想要优秀点儿% Z+ f7 |% d5 w" I* _1 X
4 g9 W1 C4 v- t' v- ]7 ~5 {
a5a77e57cdd14974921b2f05114359e1.png
赞 收藏 评论0 发布时间:2023-3-2 11:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

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