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

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

[复制链接]
TLLED 发布时间:2019-2-16 11:15
本帖最后由 TLLED 于 2019-2-16 11:14 编辑 # v$ C1 [+ ?2 H, M2 A

4 B% d" P9 C$ }8 e9 s$ }* a) H    使用STM8L050芯片串口输出数据,使用半双工模式。* c. K$ E  ]7 D

* G/ J7 _. W: ~7 K+ B    一、引脚配置
$ T6 P( y* T* `: G& ?0 d* Z" F$ V! G, `( N" L; m
' i: f6 ]- d9 Z9 v; Y) c
    使用STM8CubeMX来配置串口引脚。
3 F- d) @7 ?7 V& d: z' B7 ?    101.png ; P5 [1 X$ Y) H1 v
# S, f9 x% B: G7 N! x4 m/ L
3 O$ Y7 [1 O5 G5 d+ H# k
* w9 p( W. P+ E8 S1 ]
    二、硬件部分$ r; x, b0 [* _9 b2 s

: F: B0 o% `6 m! u/ {) \
# P5 f' u4 S# ~4 n
    使用USB-TTL模块连接PA0引脚和地引脚。6 ]! r3 W/ |& j
0 u! u8 l0 h1 B% `5 Z& O6 p

6 N* U$ W- E0 S1 C& j! ?6 H   三、程序部分$ H* j$ J1 I# i# H. V+ d
      ]& x+ [* [9 r! _2 {$ j% b
    3.1、串口部分程序
2 g* ^" H% v4 V( S    7 i* c) }: o' p3 N9 f8 f
  1. <font size="3">- R0 }) E" d* j2 x7 D' K/ G9 b
  2. //uart.c6 y# t$ s+ v/ t6 J% C  J7 X
  3. #include "stm8l15x.h"
    / T: E! g& v5 n" x( r; N3 m, v/ |
  4. #include "stm8l15x_usart.h"5 m! s1 ?; z# p. r8 N
  5. 6 ~1 ?7 j. `6 ]; [2 I- o% A( l
  6. //串口半双工通信) d. t" G' C7 s/ u
  7. void uart_init_halfduplex(void)
    8 ~$ L, n$ z$ r
  8. {- Z  D) b6 `5 J# S/ V, r$ `
  9.   //设置串口端口
    ' \0 v1 I- j6 {/ e! C9 P
  10.   GPIO_Init(GPIOA, GPIO_Pin_0, GPIO_Mode_Out_OD_HiZ_Fast);
    : d1 Y( K- R# J3 ^
  11.   4 u4 r  V! h# Z' N. ?
  12.   CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);( f- ~& O1 G! |' {
  13.   SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);
    0 F# N( g, \, r0 O$ [( u! i( g0 D
  14.   //配置串口
    1 J- u, r6 W4 z+ V6 T$ r
  15.   USART_DeInit(USART1);
    3 e+ b. O8 P  I& j3 P) ]( ^
  16. ) l  L/ Z. k1 q- v) c6 V
  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));; W  t* I" V$ o) E! w
  18.              / Q3 [3 E; N. }; B
  19.   //使能半双工模式# ~" ~) \+ x) C5 C
  20.   USART_HalfDuplexCmd(USART1,ENABLE);* f6 f3 q2 T* a; Z- l
  21.   
    / w' G' s0 D1 o% @- W# a% @( `; ?
  22.   USART_Cmd(USART1, ENABLE);5 P- a0 f8 ?. e' s2 X6 T1 ]3 S
  23. ! @) h$ J, B8 a7 z5 s9 h, @9 M, O
  24. }" v2 l; }. f8 Y! C

  25. 7 N4 g. \9 D$ p

  26. 2 l/ m, z& _; q) k1 a
  27. void Uart_SendDat( uint8_t dat)
    5 d0 e4 @1 o" b+ w
  28. {
    # u* F, K8 c: J6 U! m
  29.   USART_SendData8(USART1, dat);
    ) B" e* M1 M1 a3 t8 T
  30.   while(USART_GetFlagStatus( USART1, USART_FLAG_TC) == RESET);
    0 P& [$ t; Z1 v' r, K6 ~7 a
  31. }2 x" k0 o( m) F6 ?* O) Q
  32. # O4 M. A* ^) ?9 G2 K/ Q
  33. void UART_SendString ( uint8_t *s) # s) g+ t0 i7 B& o, S0 S
  34. {. s7 f/ H' t! `
  35.   while (*s != 0)
    1 a! x/ g$ T5 [! s5 [
  36.   {. _! Q7 I7 S) o0 J' ]
  37.     Uart_SendDat(*s++);7 m- N; E% Z0 o+ [
  38.   }/ y  l9 i/ o) M
  39. }" `8 J( B. A6 L' S+ L/ k1 e
  40. : G7 d5 G6 |  f
  41. ! H, r' W1 G+ z8 L7 g9 u! W
  42. //uart.h
    4 v3 f  ?% Z5 L
  43. #ifndef __UART_H7 Q8 ^" i+ z8 c0 y) k
  44. #define __UART_H
    2 e* {: k7 {7 O- j2 W) t

  45. # a0 R+ A& k; w
  46. void uart_init_halfduplex(void);3 D4 Y/ d  Q4 ], x
  47. void Uart_SendDat(uint8_t dat);
    4 H# P' S8 ~7 R3 ?7 D9 t
  48. void UART_SendString ( uint8_t *s);
    , S8 g0 {  }8 B- {, y, F

  49. # F8 J9 Q! R, h
  50. #endif 4 c6 w" c! _, H5 T- S1 U
  51. 0 \& @$ f6 {  M+ _
  52. </font>
复制代码
   
, }$ G' ]4 Z, t. y* O    3.2、主程序

& T1 o: t0 H: `3 r' {& j   
  1. <font size="3">void main(void), N4 k7 w# p4 s9 L0 x& k; M' w
  2. {* [3 e5 B3 X& f/ I0 K

  3. 1 |5 \. `7 X  U, Q8 A7 ]
  4.   CLK_Config();           //时钟初始化
    $ K; e  ^' [/ q$ f2 Z6 d1 z
  5.   & h0 r: ]. r. i6 H
  6.   Delay(0x2fffff);        //延时5S             " M* s3 @- ]: P, A- P
  7.   
    % a- ^" N0 z; y$ f& x$ K5 w: v# {
  8.   led_init();             //led初始化
    ! X; T3 d0 }: ^& t/ _; W
  9.   //swim_init();; V6 o8 T# o4 I( \2 }
  10.   uart_init_halfduplex();& x  @& b" R% m, x! O
  11.   2 y) c( ?9 S- n: i" M
  12.   while (1)* a/ q4 N) d& K; }6 B6 I
  13.   {  t1 v  Y: m( k8 p( i2 H4 ?0 _
  14.     led_tog();            //LED取反            
    , W  u1 j: `* o+ x7 A
  15.     //swim_tog();           //SWIM引脚取反
    , z8 c  P. N. f+ ?
  16.     UART_SendString ( "www.stmcu.org.cn\r\n");  o, _. V5 P# ^$ S# a
  17.     UART_SendString ( "stm8l050 串口测试\r\n");
    # |5 y; y* g: {" k" o4 T$ V9 E
  18.    
    1 I) x  |) S" u! G
  19.     Delay(0xffff);
    . j1 e: p! h4 `8 e) {
  20.   }
    4 S" x0 H$ t. o$ n  H( X0 p
  21. }</font>
复制代码

- k' t+ A% B7 _- E* Y, \
   
. s; J9 ?8 V5 _8 q+ R; ?7 v    四、程序执行结果
5 V" y- O3 }; `7 _7 d6 E5 y

0 E* \, ~3 G1 i& L2 P+ o6 i    102.png
, w* z  d$ u% `, X- {1 L+ S% h    8 _' A$ V; a6 B6 j: R
% c: k+ [9 _' r% t, ~/ j* n4 t
9 ^- l0 A' V& n2 d
' ]/ {2 f" z; C  K* n
赞 收藏 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
8 i# k8 l. {2 n8 `这个单片机引脚真少!!!

! ]4 U/ r( N5 E( N# j是啊,8个引脚,IO口最多就6个

所属标签

相似技术帖

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