串口通信是单片机学习的一个最基本、最重要的功能之一。串口通信可以间接的当做调试接口使用,实现单片机与电脑之间的通信。当然可以与一些模块(比如蓝牙、wifi)通信,也可以作为和其他单片机通信的工具。

STM8S的通用异步收发器(UART)主要特性:

●  全双工的,异步通信

●  可编程数据字长度(8位或9位)

●  可配置的停止位-支持1或2个停止位

一般的,我们使用串口通信主要是关心几点参数:波特率、停止位、奇偶校验位

其次就是如何发送、如何接收数据,这里介绍的使用阻塞式发送数据中断方式接收数据。


以下代码是初始化串口,参数为:115200   1停止位   无校验位

void Init_UART1(void)
{     CLK_PCKENR1 |= 0X04;  //使能USART1时钟 UART1_CR1=0x00;UART1_CR2=0x00;UART1_CR3=0x00;// 必须先写BRR2// 例如对于波特率位115200时,分频系数=16000000/115200=139// 对应的十六进制数为008B,BBR1=08,BBR2=0BUART1_BRR2=0x0B;UART1_BRR1=0x08;UART1_CR2=0x2c;//允许接收,发送,开接收中断
}

波特率设置需要通过计算,STM8S的默认主频是16M,得到写入寄存器的数为139。 注意,这里需要先写入BRR2再写入BRR1,且格式特殊:

BRR1应夹在BRR2之间!(需要修改波特率需要好好理解)

编程手册描述如下:

阻塞式发送函数(发送一个字节)如下:

void SendChar(u8 dat)
{while((UART1_SR & 0x80)==0x00);UART1_DR = dat;
}

只需要将数据加载到UART1_DR寄存器里就算是OK。

终端接收数据函数如下:

//将收到的数据再发送出去
#pragma vector= UART1_R_OR_vector//0x19
__interrupt void UART1_R_OR_IRQHandler(void)
{u8 res;res = UART1_DR;return;
}

使用中断需要声明中断函数入口,并且指定中断表序号(串口1接收中断向量为0x19):

#pragma vector= UART1_R_OR_vector//0x19
__interrupt void UART1_R_OR_IRQHandler(void)

只要串口接收到一个字节的数据就会立即进入此函数,数据存放在UART1_DR寄存器中。
注意:要使用中断这个功能需要在mian函数中加入开启中断语句:

_RIM;

附上stm8s在IAR环境下的项目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

http://download.csdn.net/detail/devintt/9454188


stm8s开发(三) UART的使用:串口通信!相关推荐

  1. 第三篇 树莓派的串口通信和语音识别模块

    目录 一.串口(UART) 二. wiringPi提供的串口API 三.语音识别模块 1.阅读模块代码 ①代码阅读工具:Souces Insight4.0安装.激活.汉化等 ②语音识别(口令模式)源码 ...

  2. Matlab上位机开发(五)Matlab串口通信

    1. Matlab串口通信 Matlab提供了串口通信的功能,串口通信的流程如下: 1.1. 创建串口对象 创建一个串口对象的API如下: scom = serial('<串口号>'); ...

  3. Maix Bit(K210) 裸机开发教程(二)串口通信

    Maix Bit SDK 1.使用API简介 2.代码 3.实现效果 Maix Bit 开发板 Kendryte IDE开发环境 实现功能,在串口助手输入字符,通过Maix Bit回显在串口.   嵌 ...

  4. STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点

    一.stm32串口通信 stm32串口通信一般是指通过UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器传输数据,UART 作为异步串 ...

  5. 安卓开发板之串口通信,通过modbus Rtu协议控制下位机

    安卓开发板之串口通信,通过modbus Rtu协议控制下位机 1.环境准备 2.编写串口操作核心类 3.编写测试类 前言:因为公司最近有个人脸识别门禁的项目,这个项目主要业务是实现远程人脸注册,管理员 ...

  6. (一)FPGA之串口通信(UART)

    (一)FPGA之串口通信(UART) 回到梦开始的地方,如今回过头来看串口协议,确实清晰了很多,但是奈何好记性不如烂笔头,我还是要重新记录一下学习的知识点,方便查找和学习. 波特率(Band Rate ...

  7. 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信

    [串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...

  8. 串口通信——蓝牙模块使用(HC-08为例)

    一.串口通信 :(STC89C51为例) (7条消息) 51单片机--串口通信详解(STC89C51为例)_佛科院深夜学习的博客-CSDN博客https://blog.csdn.net/weixin_ ...

  9. SPCOMM控件在Delphi7.0串口通信中的应用

    ====================================================== 注:本文源代码点此下载 ================================= ...

  10. 基于API函数的串口通信(方法讲解)

    用到的串口通信编程方法有:使用通信控件.在高级语言中嵌入汇编以及使用API函数.在这几种方法中,使用API函数编写的串口通信程序最为高效.灵活.串口通信编程将用到三种API函数 --串口通信相关API ...

最新文章

  1. html+li标签+高度,有时在使用Jquery插入LI元素时,JavaScript不会调整UL元素的高度
  2. winform 代码定义事件
  3. 直播源码中有哪些网络协议需要注意?
  4. javaweb不同用户需要几张表_程序员必备2020版:JavaWeb快速进阶全套教程
  5. 业务随行:用户的网络访问策略还能这么玩
  6. Flex:MyReport报表引擎2.7.3.0新功能——甘特图
  7. asp使用Jmail发送含任意内嵌附件和附件的Email函数
  8. 摩拜单车的节能黑科技
  9. 基于聚类分析和因子分析的空气质量研究
  10. 信息最全--MySQL循环插入测试用户数据--姓名
  11. AndroidTV获取U盘路径
  12. H3C MSR 2600-10 Winet 交换机consol口设置
  13. 【2023】浙江大学计算机考研信息汇总
  14. 网站app被劫持怎么办?dns被劫持,域名被劫持,HTTPDNS阿里云域名防劫持, DNSPod移动解析防劫持服务D+...
  15. 【ICPR 2021】遥感图中的密集小目标检测:Tiny Object Detection in Aerial Images
  16. Java 获取当前时间前一个小时的时间
  17. j-style pro android,三星J7 Pro官方安卓9台湾版固件rom包:BRI-J730GMDXU6CSF5
  18. 人民海洋里的“华为博弈”
  19. excel中小写变大写的公式
  20. 蚂蚁金服上市,别人家的程序员已经实现财富自由!

热门文章

  1. 谁交了片仔癀的智商税?
  2. 为智慧城市的发展做出重要贡献的智慧楼宇系统及应用场景
  3. 将U16类型转换成u32,float,u8字符串
  4. php 过滤粘贴_粘贴过滤的数据时出现错误1004
  5. 深入浅出Linux操作系统进程管理与rpm包管理(四)
  6. 加密的惨剧!慎用市面上的文件夹加密软件
  7. Android的招聘要求
  8. python爬虫实践目的_【Python爬虫】理论基础及入门实践
  9. iOS开发之TextView常用属性
  10. python猫狗大战讲解_Kaggle猫狗大战图片分类项目研究