首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM8L的USART1串口通信详解 含例程

STM8L的USART1串口通信详解 含例程

STM8L除了可以进行串口通信,还可支持红外通信,智能卡协议,这些功能后续会开发,发布程序源码。STM8L还可以使用DMA缓存数据,减少CPU负担,为了简单起见,本文没有用到DMA功能。

只需要简单的配置发送的字长度,停止位数,波特率,打开发送接收,就可以进行串口数据收发。下图为串口发送数据流程。
对于串口发送数据,需要注意的是,打开发送后,数据发送完成,如果不关闭中断,程序会一直进入中断。所以在确保数据发送完成后,需关闭中断,退出发送数据。
本文通过周期性(500ms)的向上位机发送一组数据,来演示STM8L的串口通信。串口接收部分程序也已经调试好,只需把while循环中的程序注释掉,设置断点,查看上位机发送来的数据即可。
下图为串口助手接收到STM8L每隔500ms发送过来的一组数据。

  • /****************************************************************************************
  • *开发环境:IAR for stm8 v1.40.1
  • *硬件平台:STM8L-DISCOVERY
  • *功能说明:每隔500ms通过PC3引脚向上位机发送一组数据。串口配置为:波特为9600,8个数据位,1个停止位,无奇偶校验。
  • *作    者:茗风
  • ****************************************************************************************/
  • #include"iostm8l152c6.h"
  • #include"stdbool.h"
  • #include"stdint.h"
  • #define TXBUF_SIZE 9
  • #define RXBUF_SIZE 25
  • bool bTX_finished=false;
  • bool bRX_finished=false;//串口接收完一帧数据标志位
  • uint8_t ui8TX_number = 0;
  • uint8_t ui8RX_counter=0;
  • uint8_t ui8TX_buffer[TXBUF_SIZE]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};
  • uint8_t ui8RX_buffer[RXBUF_SIZE];
  • /******************************************************************************************************
  • *  名    称:void delay_10ms(uint8_t x_ms)
  • *  功    能:延时10ms
  • *  入口参数:无
  • *  出口参数:无
  • *  说    明:
  • *  范    例:无
  • ******************************************************************************************************/
  • void delay_100ms(void)
  • {
  •   uint8

返回列表