标题:
STM8L的USART1串口通信详解 含例程
[打印本页]
作者:
yuchengze
时间:
2016-12-23 20:45
标题:
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
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0