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

STM8-SO8-DISCO -- 10、STM8L050 串口输出测试

[复制链接]
TLLED 发布时间:2019-2-16 11:15
本帖最后由 TLLED 于 2019-2-16 11:14 编辑 ) S! Z( e, `! x1 l; ~! w' K
8 G, A% N) ^* z, U* [) v1 ^
    使用STM8L050芯片串口输出数据,使用半双工模式。
5 h8 s1 ?; J- y3 w4 l* q% n

* N( L1 [3 O0 k/ A    一、引脚配置1 W8 ^9 K- ]  L3 z8 M8 z
' W+ p3 }2 r$ Y$ U; k! I
6 ]) P) A* r* _' O+ P/ b. R$ W& A
    使用STM8CubeMX来配置串口引脚。
' V; r/ `* X6 C+ f* v) ~+ Q    101.png
( B) T& X/ M5 Z% q0 @
9 E$ w! F* W$ v6 M' J. S0 F8 h

2 x$ n& Q2 o" l. L3 ?# j3 q
6 n( q& {2 c; z. o# y% T7 G7 |
    二、硬件部分
& ^% v& e1 \0 L9 q5 A# g. B
/ [& b/ H  C8 k( G% _  _* O. b' _

* e8 ?/ U6 C* n7 e2 l0 F    使用USB-TTL模块连接PA0引脚和地引脚。
1 K% B  y# n1 V0 Y6 o: F4 M4 h, S
6 J8 q4 h$ R! S% g: `: W6 ~% @' s

( |( V) m% R9 [0 u9 [   三、程序部分$ a+ N/ H3 Q0 r- S" d4 H" B
    $ L3 T0 ?& Q+ U- A8 M) f
    3.1、串口部分程序
1 v. ]/ w; X% p" G1 \- ?( A   
$ D! z; _! s2 e3 }
  1. <font size="3">, R% |# b8 w& s
  2. //uart.c
    8 x4 |, A! v7 G# E$ ?+ W! n2 Y: C
  3. #include "stm8l15x.h"! e/ _% E1 w! i9 W4 A
  4. #include "stm8l15x_usart.h"
    " c. x- B' ]# L0 Z6 G4 ]; T
  5. 2 X# D6 J- f, ~  Z# g3 B
  6. //串口半双工通信
      F, d/ l, g  m5 J
  7. void uart_init_halfduplex(void)
    $ q* ?; K* ]$ c- m% }/ d
  8. {
    6 {# Z6 C8 D/ N2 C" q- U
  9.   //设置串口端口. H6 n  x& s% I
  10.   GPIO_Init(GPIOA, GPIO_Pin_0, GPIO_Mode_Out_OD_HiZ_Fast);
    - |! A7 j- X6 T7 ?+ I4 W
  11.   
    + z7 f) a9 A, w, M7 _3 r
  12.   CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);4 I, ]( a9 m% b* m9 ]+ u, y- n
  13.   SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);
    2 p( W: r( z7 U9 g
  14.   //配置串口; J: t  _: n# v2 ?2 G1 `4 x& W
  15.   USART_DeInit(USART1);
    " a3 T$ q( i! K/ s8 S
  16. 8 J) m5 d' c4 _  Q6 C  s6 A
  17.   USART_Init(USART1, (uint32_t)115200, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
    % a# B# J7 X7 K
  18.             
    $ Y) q, a9 t  ?& `" d7 ?- v
  19.   //使能半双工模式
    , |- A/ ]" W/ u, K
  20.   USART_HalfDuplexCmd(USART1,ENABLE);2 _& h! m/ v. n) W5 L
  21.   
    5 W1 L& A6 a+ n! v
  22.   USART_Cmd(USART1, ENABLE);
    2 \0 a1 H5 b% A; d8 \1 f

  23. & @, x% b$ o1 D# v# P  j( d
  24. }
    & @; L0 v  a- q; a0 |$ o4 O! s6 X- J

  25. 3 O7 p5 j2 j. Z0 o7 N" E% t' s9 F

  26. , w4 j2 S2 n' z0 m
  27. void Uart_SendDat( uint8_t dat)# k8 j: n. v7 a5 }/ J2 i% j
  28. {( `) h' f- V% p+ a" y6 p9 |
  29.   USART_SendData8(USART1, dat);
    ! b) t/ ?( c! w; Q8 `8 M
  30.   while(USART_GetFlagStatus( USART1, USART_FLAG_TC) == RESET);! [( ]! n2 d8 E% V( X$ d
  31. }
    2 A8 f) L6 J$ Q1 w
  32. ; ?) ]8 _) L7 K$ D4 G$ `' U
  33. void UART_SendString ( uint8_t *s) 0 V% p, Y+ ~' t- e
  34. {( L' _% [/ I+ V
  35.   while (*s != 0) ) t# G: r+ Q$ r5 F; A
  36.   {. e" K- v% T8 E( ?4 j4 I, n% v
  37.     Uart_SendDat(*s++);6 U5 O8 r: L6 t' ?& H
  38.   }
    2 \8 U; k5 u. F8 ~8 ]
  39. }
    : g7 A& U  z/ Z& S) O
  40. 8 ~; W; ~( b* r' y0 Z7 @

  41. 6 A; c4 T6 s3 T2 I
  42. //uart.h
    5 w3 h- F' ~1 p/ r7 o- d$ n" j
  43. #ifndef __UART_H+ J! P! a! A( w$ N
  44. #define __UART_H* k: B1 \: r* u* ]; o, L

  45. , d8 x+ a4 }6 W+ Y" Y
  46. void uart_init_halfduplex(void);
    ! }  S7 T5 J4 {1 G4 F+ O7 M
  47. void Uart_SendDat(uint8_t dat);7 ~$ }) U0 F% S9 h' O* ?+ Q$ s
  48. void UART_SendString ( uint8_t *s);
    " _& p2 F- t" c8 l. J( g

  49. * h# S+ P% h* j! B
  50. #endif 6 ]! u' s* b+ z0 C) _+ m2 G/ v

  51. $ I  F. J( D0 W" J, c+ f
  52. </font>
复制代码
   
# d! @" F! H3 F3 g3 z7 W2 H    3.2、主程序
1 ?' ?6 y/ Q( J- C4 s0 p7 ^7 o
   
  1. <font size="3">void main(void)9 X! x8 f* S# o8 N( H# b
  2. {
    3 O. k* V" @* z, h2 p9 j

  3. , r( J4 W' L) \6 ~5 h$ j
  4.   CLK_Config();           //时钟初始化% B" H) g4 ]7 |, D7 \& \0 D, m8 |
  5.   
    9 M; A9 A: N: y$ x" K
  6.   Delay(0x2fffff);        //延时5S             " F0 W' m; e/ N( R$ o. u
  7.   
    ; B1 F/ a$ p! e* A
  8.   led_init();             //led初始化
    & q0 W2 J9 a2 C/ X% m0 M$ p. p
  9.   //swim_init();
    3 I$ P! Y# X6 t6 @7 O: z
  10.   uart_init_halfduplex();
    - A3 R4 G- w  X" r
  11.   
    ) D% Z8 s( K' }
  12.   while (1)7 j; E2 y2 {: H3 n
  13.   {
    , w' ]" U/ n  c9 p+ i; H6 \
  14.     led_tog();            //LED取反            
    : W6 {* t$ g+ h6 i4 d! O& |
  15.     //swim_tog();           //SWIM引脚取反. R$ L, b# r" I3 x8 T2 n5 m
  16.     UART_SendString ( "www.stmcu.org.cn\r\n");
    " D1 L9 f0 [; g! t
  17.     UART_SendString ( "stm8l050 串口测试\r\n");
    & |7 `- o$ G* K+ d8 x6 r
  18.    
    3 G$ j: P' S0 y1 }; C+ g" h
  19.     Delay(0xffff);
    3 b9 U* {+ p1 _% N1 H7 R- t
  20.   }
    0 @5 R5 \! X4 }# @, ?. `" [
  21. }</font>
复制代码
) l0 p, Z8 I4 x7 A
   : ^6 D# s8 ~0 Z* v) i, d4 f/ W
    四、程序执行结果4 G/ C8 w7 [4 A; J* W- N  l; A

# d8 x* o3 b% W    102.png % v% V3 `# S4 ]" z5 f9 U. @
   
! k7 \9 w& R& E: n1 B2 Z! [
% e$ q% c- |" D1 X: E

8 C2 l1 q  n1 c: O/ p; X6 U6 i! Q! I) T  c. P  W6 ~
收藏 1 评论2 发布时间:2019-2-16 11:15

举报

2个回答
pythonworld 回答时间:2019-2-16 19:05:02
这个单片机引脚真少!!!
TLLED 回答时间:2019-2-16 21:52:13
pythonworld 发表于 2019-2-16 19:05
/ T* a  b* I% Q8 l  e( c这个单片机引脚真少!!!
" t( F8 M' B- A6 F1 _5 ^8 c0 X
是啊,8个引脚,IO口最多就6个
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版