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

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

[复制链接]
TLLED 发布时间:2019-2-16 11:15
本帖最后由 TLLED 于 2019-2-16 11:14 编辑
$ B- m( w/ F  v
% t, F6 R# K8 U6 R, f, P% ^    使用STM8L050芯片串口输出数据,使用半双工模式。0 b% l8 s0 t$ S" w
0 P6 b6 Z/ |0 ^2 d
    一、引脚配置+ F- K, v8 i- h+ ^4 c# u$ U% a
6 G. h! n* b& T( o0 Z9 W

7 P8 w; I0 F' X4 R1 \. ?5 T    使用STM8CubeMX来配置串口引脚。; h+ V  S9 L1 c5 X( ]! [9 J! ]5 H0 n
    101.png , m: X. N9 {+ S9 H( @( I7 j* S

7 i! B3 Z* P# w- C6 e4 ^; J
0 E. N8 b7 d& F) a

( I3 |  r2 E- o9 @7 m    二、硬件部分
! F/ z/ E, a9 f3 ?$ n* x- A% y' z/ [7 j1 ~- K, `

4 ^* V$ K2 {3 [    使用USB-TTL模块连接PA0引脚和地引脚。
7 v! q4 h0 H% T9 U2 H0 T" e) n# W- c# [$ s

7 c$ m/ H. a8 C5 {) K; A   三、程序部分4 u4 h0 @% }: S5 \! L
    ( C* m3 r1 C5 X$ z5 c
    3.1、串口部分程序3 k4 V7 B' x1 D. S. I
   
, P, T6 F' v0 ]. S6 Q) V" z
  1. <font size="3">
    - V" I: P( }: f$ ?& A# f: R
  2. //uart.c! n6 s% V' A* q
  3. #include "stm8l15x.h". s2 y3 x2 e9 Z- u
  4. #include "stm8l15x_usart.h"
    4 j1 i0 I& m1 ~$ W+ h
  5. 4 h2 W2 p9 Q$ f! w  j& n  q6 ~1 {
  6. //串口半双工通信, A0 H5 \& n% a" {# i! h5 W8 L6 C% ?
  7. void uart_init_halfduplex(void)
    % ?( A; N) j+ `% f) _" x& q0 o
  8. {
    & `0 T  I8 O! ?4 S* m# H5 {, I8 D
  9.   //设置串口端口  }8 J6 x# q9 W: ?
  10.   GPIO_Init(GPIOA, GPIO_Pin_0, GPIO_Mode_Out_OD_HiZ_Fast);
    0 j# _# X, I# F# c- x
  11.   % v: w2 [& K- [+ J, S: F/ H) a
  12.   CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);) n& {3 o0 J5 I9 d8 L. q
  13.   SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);& ]6 k1 ]4 A! m
  14.   //配置串口6 ?3 k9 c2 }+ ]# ?4 m! [9 l
  15.   USART_DeInit(USART1);+ `# t0 z& T' o9 U1 R) i

  16. 4 Y/ B- n7 l* z  x7 P. e
  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));6 G( M' u7 n/ A0 o
  18.             
    3 L" ?% l& E8 l$ E( K: A
  19.   //使能半双工模式; H  a+ U: r9 g
  20.   USART_HalfDuplexCmd(USART1,ENABLE);
    / \% w! `: c& C  P( M% R5 w8 }
  21.   : B& y7 R$ U- g' D4 Z  h
  22.   USART_Cmd(USART1, ENABLE);1 J2 z+ @$ z. Q: l3 ^6 p

  23. * i: R5 Q9 {; C
  24. }
    " a. |2 F1 \: `& o0 |3 j

  25. 9 x3 h# i& i7 F8 Q7 i. U
  26. & h- n/ l4 g& }( _, [
  27. void Uart_SendDat( uint8_t dat)0 q; o* w9 O3 I0 B4 v
  28. {0 s) o& m5 V* g, g) H. P
  29.   USART_SendData8(USART1, dat);
    # x2 m3 m3 R4 q1 t3 L
  30.   while(USART_GetFlagStatus( USART1, USART_FLAG_TC) == RESET);3 U4 u$ \, t/ L3 [& ^, @
  31. }- A6 ?) i6 |) A) z/ C; @: d6 t

  32. 3 G4 S) q( v* h& o" z. h
  33. void UART_SendString ( uint8_t *s) ; {5 \) p+ g9 u) [1 |. N6 Q: ?$ s
  34. {% H: x( B- i/ }  O1 f1 M" F
  35.   while (*s != 0) 9 R: N' v- Q0 w% d% Z: T4 ^  R
  36.   {
    & V5 o; w3 j7 ]& ^+ i& O* n
  37.     Uart_SendDat(*s++);& j+ ?6 S" Z8 \' x. K  l4 d% M
  38.   }
    ; Y$ r) Q* M, C. P) X
  39. }
    / I8 ^. g4 T2 ~* t' p9 ~$ a
  40. 0 x" d6 c( ]9 }
  41. 4 S) G' D: W$ q9 Y
  42. //uart.h% o) Y1 M5 o% b" R) `
  43. #ifndef __UART_H
    2 g$ _+ q5 l$ K$ A7 I) U
  44. #define __UART_H
    " \. _% X" I4 Q: v$ \

  45.   o4 T! \) w! n9 S+ D
  46. void uart_init_halfduplex(void);% H) y8 O6 o! A
  47. void Uart_SendDat(uint8_t dat);& B! R5 K# ?7 c9 h( u0 Y9 O
  48. void UART_SendString ( uint8_t *s);
      Q0 [& m1 I9 j4 h/ o- M
  49. % G7 v! W) b) N3 c
  50. #endif
    0 y" }5 `$ v) I

  51. " v& I3 S& Y. s) P+ B' z
  52. </font>
复制代码
   
: T3 i+ B8 l( }. a- |# D6 n. d    3.2、主程序
: z+ D* `8 s, m& J/ k. l* T
   
  1. <font size="3">void main(void), y, L4 U8 `5 X4 K6 z" b% l. r3 ~
  2. {5 [' y, E9 S2 h' Q
  3. & J2 }2 ^2 ^! O$ y' r. J
  4.   CLK_Config();           //时钟初始化
    * L! v% G) A/ G0 N7 n
  5.   + q0 M& ]( Z1 @/ [- o" t
  6.   Delay(0x2fffff);        //延时5S             4 W- B5 c/ w4 h7 S8 ?
  7.     [7 B4 C( D0 P' \6 \8 Y9 _
  8.   led_init();             //led初始化
      u/ X; |, ^: d- _
  9.   //swim_init();
    1 T2 K/ t3 |( N4 A2 P4 i. ]
  10.   uart_init_halfduplex();
    % z4 ^6 C0 h: O9 ^2 V
  11.   7 p8 s* s/ }) m# ^) n
  12.   while (1)
    % V+ Z, P: q9 o' Z* K: O' b
  13.   {: i6 i9 N' x- m1 C
  14.     led_tog();            //LED取反             8 I, x( F; k: Z6 k
  15.     //swim_tog();           //SWIM引脚取反
    . n; B& C8 m: ]* C: X% n$ l+ S
  16.     UART_SendString ( "www.stmcu.org.cn\r\n");
    7 d: c. n5 T4 d4 Y. ~2 M' C- c
  17.     UART_SendString ( "stm8l050 串口测试\r\n");) K$ ]% `, N- X9 x7 P5 v
  18.    
    8 }& B! {4 q' M" j+ H9 R, R# N
  19.     Delay(0xffff);. F5 h- ]1 ?( O" _7 j
  20.   }
    6 M, k# H% Y! _2 h3 i, j
  21. }</font>
复制代码
6 a. B# Y' O# G0 L, @
   
6 r  [- ]& t; q& s    四、程序执行结果, b4 [4 J$ B9 a1 a! w. V7 p

$ K* q  W& P$ }1 V" V6 E    102.png , s# R+ }& b  h
   
: |! r+ z2 C* Z3 \  t& m% x% f

7 S7 b* |6 Y" Y5 r/ U3 r6 j# u/ p. Y4 n7 L. t3 n2 l" }
+ H) Z& y3 n8 ^" q; f# ]0 p( Y; t
收藏 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! X2 v) P+ Z; ^( w: c
这个单片机引脚真少!!!
2 q/ C% r% x+ N+ W. f
是啊,8个引脚,IO口最多就6个
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版