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

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

[复制链接]
TLLED 发布时间:2019-2-16 11:15
本帖最后由 TLLED 于 2019-2-16 11:14 编辑
7 Q! w4 ^# c  l' F' c$ _, b* G3 X) b2 z/ D8 Q
    使用STM8L050芯片串口输出数据,使用半双工模式。
2 G& k3 c6 L  s* k- g! L5 {
2 n7 x8 r' B  [3 h4 B
    一、引脚配置4 a' n& H% ], M8 c8 M, g
$ N' J! M) w9 |5 \8 k, p) f6 E

( M5 y7 b% g6 W* b  d5 {    使用STM8CubeMX来配置串口引脚。
+ @, O. p9 u7 p; ^/ r9 U    101.png # L- w* P7 A! z% {

% R1 P* n- V9 |. L% w
! ^: x* l5 ?" f- {  ]7 d

, y6 x& `8 k) W    二、硬件部分7 ?# d+ P/ a8 i; _4 m4 ]& G2 M* G
  I, O% W! I4 L

( h3 Q9 z' C5 m, d    使用USB-TTL模块连接PA0引脚和地引脚。
2 n; Y/ n) S( P3 B+ ^8 ~' ~5 X) N
1 o& I8 X# f: x) K7 |4 J- y8 i
   三、程序部分3 D3 H) J! ^5 L. M' }
   
' G9 u+ w8 h. s    3.1、串口部分程序3 C# |9 M- S; e% a, L# Q2 F
    % p3 N1 [8 ~( G1 n
  1. <font size="3">1 F. r) q7 D+ v# R9 u3 M! H5 O+ J
  2. //uart.c2 p7 M- x! I8 F
  3. #include "stm8l15x.h"6 h* M' Y: ]4 T9 H9 d0 [
  4. #include "stm8l15x_usart.h"
    # i3 _- c9 r+ w9 X/ l

  5. 0 Q6 v) t+ l  {( A
  6. //串口半双工通信0 j7 I+ l+ r* M* |% O1 Q
  7. void uart_init_halfduplex(void)
    8 N9 v. g4 |" j$ V3 c- i  H' U
  8. {6 f* f- i7 b& d# W
  9.   //设置串口端口
    4 r% _+ e8 L; r* i  c9 c9 v
  10.   GPIO_Init(GPIOA, GPIO_Pin_0, GPIO_Mode_Out_OD_HiZ_Fast);0 d0 i. M9 O  B& d6 u  G
  11.   
    1 U3 v. k) x+ d& x
  12.   CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);
    ' s3 c% [4 p: S
  13.   SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);  ~% k( g% H5 `% ~) e# Z1 A3 I
  14.   //配置串口
    " Q0 u3 R  B" h; h+ g% ]  E# o
  15.   USART_DeInit(USART1);- e2 V# F2 T  d  ?" A/ O; I& u
  16. 2 a, Y0 ?- R# m  S6 E6 [: H
  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));
    % n" y; ?8 m  N. J* N- ^- V7 c
  18.              ' o; k+ Y  X; k
  19.   //使能半双工模式$ g3 Z/ L5 |) [- P0 B: f
  20.   USART_HalfDuplexCmd(USART1,ENABLE);4 z" H/ f6 m1 d4 B+ C- G9 k
  21.   
    8 n) |. O8 ^( [6 ~+ f8 H8 G
  22.   USART_Cmd(USART1, ENABLE);
    ! M: Z- q. N% S, {0 [# Y

  23. / d% \9 T0 s* ]3 D
  24. }' l5 l1 C7 Q8 ~5 E& w  C
  25. ' X$ Y. n+ D) F6 [3 q- f& O. b6 N
  26. ; s: ]1 w8 M" T8 S& Z
  27. void Uart_SendDat( uint8_t dat)
    " |% F# c+ G. C7 z
  28. {& y4 g, R9 _2 G' B! x" F
  29.   USART_SendData8(USART1, dat);% {* ~% o% t; C% k2 v1 o- L
  30.   while(USART_GetFlagStatus( USART1, USART_FLAG_TC) == RESET);
    " S3 `! j" Q2 a, @- C& }
  31. }
    - k' I% y/ e% Q

  32. 4 k- `, G4 ~% O1 u$ [
  33. void UART_SendString ( uint8_t *s)
    : _4 y8 K, ~+ G% [; x* U
  34. {) {$ [; A6 H' V
  35.   while (*s != 0) 1 E8 ~; j6 A1 o, X
  36.   {
    9 E1 ^, a! M" D
  37.     Uart_SendDat(*s++);
    8 I! x- S# U# L( q8 C7 _. Z
  38.   }- {1 X  O4 m, l
  39. }
    ' g/ H6 `/ s3 u6 b7 ~0 k+ o

  40. + T  t- k3 z' L5 e

  41. 9 j0 e0 Y* s  n1 [
  42. //uart.h8 F1 k( i4 q4 o0 T, Q- y7 K! v
  43. #ifndef __UART_H
    # Z8 t: J9 O& x! `# k
  44. #define __UART_H
    - u: a/ N0 h# l- m- b

  45. 6 k2 S0 W, x6 \$ M% ^( q( O: P
  46. void uart_init_halfduplex(void);
    1 ]8 }5 E& d4 n, _$ n8 [; U+ F
  47. void Uart_SendDat(uint8_t dat);1 g+ a8 X6 A6 _9 w0 Z* c; s
  48. void UART_SendString ( uint8_t *s);1 k) c8 f% w' G
  49.   X. x1 K$ U, R) L
  50. #endif
    - d% D" R; {1 c. k
  51. 6 K  d; l. h& {( U6 e/ y# C, U
  52. </font>
复制代码
    3 ?+ ^0 i) |5 }7 R2 q) L6 D+ K8 W4 R
    3.2、主程序
+ W4 ?/ f% z+ |+ f: z& o
   
  1. <font size="3">void main(void)& u" a3 I# K& ?. W  R
  2. {6 T: C6 q$ J. u3 [8 `

  3. 4 O$ W9 t5 X( R
  4.   CLK_Config();           //时钟初始化0 M. I" |( Z( I! F- A; Y# D
  5.   $ F# e+ m/ f; [5 a% b+ F, j
  6.   Delay(0x2fffff);        //延时5S            
      W8 j9 q& Z0 U6 X/ @
  7.   
    / T* }& d; h  {& S) @
  8.   led_init();             //led初始化! t& X- C: W$ j9 D* b
  9.   //swim_init();
    ! D9 R6 V6 C+ a9 k+ u
  10.   uart_init_halfduplex();
    & D7 a! D$ B7 f/ x
  11.   
    2 M2 K5 M( m  i9 O4 x; s1 R( N
  12.   while (1)& U' N! G8 l: B3 ~7 p/ t, W
  13.   {$ k# W% Z; V  L$ b2 O+ h  u
  14.     led_tog();            //LED取反            
    ' Y& `* l7 c( x5 \1 n0 g
  15.     //swim_tog();           //SWIM引脚取反6 Y/ t( K5 f0 ]% Q% M2 X& e) ^
  16.     UART_SendString ( "www.stmcu.org.cn\r\n");- H" z" i+ o; p/ w% u; Q" V! s9 x
  17.     UART_SendString ( "stm8l050 串口测试\r\n");
    . b- D  L/ L7 {/ P. w2 I: j0 M
  18.    
    % W0 W. w6 u/ O8 e' ^' g
  19.     Delay(0xffff);% p% n/ I9 |9 I& g; j3 \
  20.   }* x0 T2 I2 C2 L
  21. }</font>
复制代码
3 j. R9 j+ N" d4 I3 J
   2 q: W: d* S4 _- e
    四、程序执行结果! m/ Q" i  W4 K

! P1 M* v; d  u" ^4 R3 v    102.png
' g  p" z- O9 ^' q. s* ^   
; d# u3 i/ U4 |% [! P) ]$ {6 O

# t6 D) r3 j( l! _/ n$ E; P& @7 L  w4 r) V
# U' l: K: F1 }3 T: v, D
收藏 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
6 L! ]- _$ m& v* z2 k. ^0 w这个单片机引脚真少!!!

  K1 o+ d) X2 v4 Y. M& U是啊,8个引脚,IO口最多就6个
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版