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 25bool 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_t i,j;for(i=0;i<255;i++)//2*255个指令周期for(j=0;j<255;j++);//2*255个指令周期//delay_10ms共消耗 x_ms*2*255+2*x_ms个指令周期  //255*2*255+2*255=130610us=130ms//此延时函数,延时时间为130ms//16M/8/2=1M 一个指令周期为1us}/******************************************************************************************************* 名             称:void UART_Init(void)* 功            能:UART定时器初始化系统* 入口   参数:无* 出口   参数:无* 说       明:UART初始化为 9600 1 8 n* 范      例:无******************************************************************************************************/void UART_Init(void){/*********************************/PC_DDR_DDR2 =0;//输入PC_CR1_C12  =1;//上拉输入PC_CR2_C22 =0;PC_ODR_ODR3 =1;PC_CR1_C13  =1;//推挽输出PC_CR2_C23  =1;//输出摆率10M    PC_DDR_DDR3 =1;//输出高电平,TX空闲状态为高电平,如果不设置,会莫名奇妙的发送0x00CLK_PCKENR1_PCKEN15=1;//开启USART外设时钟//开启引脚的UART功能//00: USART1_TX on PC3 and USART1_RX on PC2//01: USART1_TX on PA2 and USART1_RX on PA3//10: USART1_TX on PC5 and USART1_RX on PC6SYSCFG_RMPCR1_USART1TR_REMAP =0;//PC2,PC3//如果需要使用其他引脚作为串口发送接收引脚,请在这里选择//设置串口工作方式USART1_CR1_M =0;//1 start bit,8 data bit,n stop bitUSART1_CR3_STOP0=0;USART1_CR3_STOP1=0;//1 stop bit//设置波特率//波特率设置为9600// 2000000/9600=208    //2000000是此时系统的主时钟频率,默认8分频,16M/8=2M//208(DEC)=00D0(HEX)USART1_BRR2 =0x00;//the BRR2 should be programmed before BRR1USART1_BRR1 =0x0D;//    USART1_CR2_TEN=0;//使能发送//    USART1_CR2_TIEN=0;//打开发送中断USART1_CR2_REN=1;//使能接收USART1_CR2_RIEN=1;//打开接收中断}void main(void){//  GPIO_Init();UART_Init();asm("rim");               //enable interruptswhile(1){ui8TX_number=9;USART1_CR2_TEN=1;//打开发送USART1_CR2_TIEN=1;//打开发送中断delay_100ms();delay_100ms();delay_100ms();delay_100ms();//    asm("wfi");}}/*************************************************************************************************** **** 名 称: UART_OnTx()* 功 能: UART的Tx事件处理函数* 入口参数:无* 出口参数:无* 说 明:发送ui8TX_buffer数组中的数据,发送完成后,置位bTX_finished标志位,下一次进入中断后关闭发送* 范 例:无******************************************************************************************************/#pragma vector=USART_T_TXE_vector__interrupt void USART_TX_ISR (void){static uint8_t cnts=0;if(bTX_finished && USART1_SR_TC==1){bTX_finished=false;USART1_CR2_TIEN=0;//关闭发送中断USART1_CR2_TEN=0;//关闭发送}else if(USART1_SR_TC==1){USART1_DR=ui8TX_buffer[cnts++];if(cnts==ui8TX_number){cnts=0;bTX_finished=true;}}}/******************************************************************************************************* 名               称: UART_OnRx()* 功         能: UART的Tx事件处理函数* 入口           参数:无* 出口           参数:无* 说               明: * 范              例:无******************************************************************************************************/#pragma vector=USART_R_RXNE_vector__interrupt void USART_RX_ISR(void){static uint8_t ui8RX_temp=0;if(USART1_SR_RXNE==1){ui8RX_temp = USART1_DR;}}

STM8L的USART1串口通信详解 含例程相关推荐

  1. 【STM32】标准库与HAL库对照学习教程八--串口通信详解

    [STM32]标准库与HAL库对照学习教程八--串口通信详解 一.前言 二.准备工作 三.通信的基本概念 1.通信方式 2.串行通信与并行通信 (1)串行通信 (2)并行通信 3.异步通信与同步通信 ...

  2. STM32串口通信详解以及通信异常或者卡死常见问题分析

    STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...

  3. Java串口通信详解(转)

    Java串口通信详解(转) 作者:denimcc 日期:2007-05-11 序言     说到开源,恐怕很少有人不挑大指称赞.学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够 ...

  4. MATLAB与51单片机进行串口通信详解

    目录 一.51单片机与电脑进行串口通信 二.MATLAB串口通信函数 三.串口属性 四.示例Demo 4.1 MATLAB接收单片机发来的数据 4.2 MATLAB向单片机发送数据控制LED 五.总结 ...

  5. S5PV210串口通信详解

    S5PV210串口通信详解 S5PV210概述: S5PV210有4路独立,异步,串行的输入输出IO口,UART支持的通信速率达到3Mbps. 一个周期数据的组成:1位起始位,8位有效数据位,1位奇偶 ...

  6. (四)裸机s5pv210之串口通信详解

    裸机s5pv210之串口通信详解 文章目录 裸机s5pv210之串口通信详解 前言 一.电子通信概念 1.同步通信和异步通信 2.电平信号和差分信号 3.并行接口和串行接口 二.串口通信的基本概念 1 ...

  7. RS232串口通信详解

    RS232串口通信详解http://www.21ic.com/jichuzhishi/datasheet/RS232/jiekou/184659.html 串口是计算机上一种非常通用的设备通信协议. ...

  8. C#.net串口通信详解!

    VS.NET2005中SerialPort控件操作详解--C#语言编写(VS 2008基本一致)       (实例编写的是一个使用SerialPort类进行串口通讯,并读取和接受COM端的数据) u ...

  9. STM32常用协议之串口通信详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.相关理论概念 1.1 通信基本概念 1.1.1 串行/并行 1.1.2 单工/半双工/全双工 1.1.3 同步/异 ...

最新文章

  1. VS调试时提示此项目已经过期
  2. 【神经网络】(3) 卷积神经网络(CNN),案例:动物三分类,附python完整代码
  3. 【NodeJS 学习笔记04】新闻发布系统
  4. 中文乱码各个浏览器的处理
  5. 程序员:进不了大厂,就“永无出头之日”了?
  6. 长按UIWebView上的图片保存到相册
  7. RabbitMQ heartbeat原理
  8. JAVA版AES加解密工具类(含偏移量)
  9. 微信小程序使用 checkbox 如何修改样式?
  10. vue页面跳转打开新的窗口
  11. 走进计算机病毒-受限文件夹的建立
  12. 【读书笔记->统计学】04-02 利用概率理论预测和决策-条件概率、概率树、全概率公式、贝叶斯定理、相关与独立概念简介
  13. Google Play Store 应用无法安装解决方案
  14. Unity3D——加入剑痕效果(PocketRPG Trail插件)
  15. MacDroid for Mac v1.4 安卓手机文件传输助手
  16. ARC122E Increasing LCMs
  17. zzulioj 1788: 小金刚的宝藏 (01背包)
  18. (操作系统开发)从实模式---->保护模式---->IA-32e模式( 64位模式)
  19. 计算机硬件的应用,计算机硬件技术应用研究
  20. 单相逆变器及基于STM32 SPWM生成代码

热门文章

  1. 对接eBay流程(demo可直接运行)
  2. 头疼的动态规划:跳木板
  3. 第4代计算机逻辑器件,第4代电子计算机使用的逻辑器件是什么?
  4. Android Fota(差分包)制作
  5. 【AGM】《风色幻想:纷争—luca篇》总之这是一个没空填的坑
  6. 网页设计 1.HTML
  7. Android CompressImage图片压缩工具类介绍
  8. Java塈百日而求新,念三番未发,其一
  9. 通用型的中文编程语言探讨之一: 高考
  10. pojo层、dao层、service层、controller层的作用