电子发烧友网 > 控制/MCU > 正文

基于stm8s103k3单片机串口UART的正确使用分享

2018年10月26日 15:43 次阅读

最近开始使用stm8s103k3单片机了。据说很好,确实不错。前几天已经试过了GPIO,Timer2,ADC的功能,都比较容易,唯独串口UART使用,破费周折,写出来,供大家借鉴。

我使用的是stm8s103k3,32脚单片机,这个使用手册上说了UART1,UART2,UART3。但是引脚的功能图上只有UART1,并且你打开stm8s103k.h的头文件,里面也只有UART1寄存器的定义说明。所以我认为只有UART1。既然有这个功能,那就用吧,我以为直接可以连接到电脑的串口(COM1),就可以使用了,其实不可以。单片机即使写着提供UART通讯功能,也要连接MAX232转接芯片,我就在这里耽误了许多时间。

1、使用stm8s103上的串口和计算机com口通许的硬件连接:

2、软件设置

(1)发送数据配置

1)编程UART_CR1的M位来定义字长。

2)在UART_CR3中编程停止位的位数。

3)按下列顺序编写波特率寄存器选择要求的波特率。

a)UART_BRR2

b)UART_BRR1

4)设置UART_CR2中的TEN位来使能发送

5)把要发送的数据写进UART_DR寄存器

main.c程序如下:

#include “stm8s103k.h”

void UART1_Init(void)

{

UART1_CR2=0x00;//使发送禁用TEN=0;

UART1_CR1=0x00;//设置M字长,8位数据位

UART1_CR3=0x00;//1位停止位

UART1_BRR2=0x00;//00-0d:9600(fcpu=fmaster=2MHz)

UART1_BRR1=0x0d;//00-1a:4800; 01-34:2400

UART1_CR2=0x08;

}

main()

{

//fmaster=fcpu=2MHz

CLK_ECKR=0x00;

CLK_ICKR=0x01;

CLK_CMSR=0xe1;

CLK_SWR=0xe1;

CLK_CKDIVR=0x18;

UART1_Init();

while (1)

{

unsigned char i;

while(!(UART1_SR & 0x80));//发送寄存器数据是否转移完

UART1_CR2=0x00;//a处

UART1_DR=0xB6;//要发送的数据

UART1_CR2=0x08;//b处

while((UART1_SR & 0x40) ==0);//发送是否完成

}

}

上面的代码是我反复实验过的,如果不加a和b处代码,则接收的数据不稳定,比如发送5,接收到的数据的串口多次开闭,则接收的数据可能是0xB6,或0x67,或0x3B.

(2)接收数据

1)编程UART_CR1的M位来定义字长。

2)在UART_CR3中编程停止位的位数。

3)按下列顺序编写波特率寄存器选择要求的波特率。

a)UART_BRR2

b)UART_BRR1

4)设置UART_CR2中的REN位来使能接收

5)读UART_DR寄存器

a)查询:查询SR中标志位RXNE (读数据寄存器非空)

b)中断:需使能CR2中的RIEN(接收中断使能)

标志位查询方式:

初始化:

void UART1_Init(void)

{

UART1_CR1 = 0x00; //8bit

UART1_CR3 = 0x00;//1 stop bit

UART1_BRR2 = 0x01;

UART1_BRR1 = 0x1A;//4800 baud rate

UART1_CR2 = 0x04;//enable REN

}

Main()函数:

while (!(UART1_SR & 0x20));//Loop unTIl the UART1 Receive Data Register is not empty

RxBuffer= UART1_DR; //Store the received byte in RxBuffer

中断方式:

初始化:

void UART1_Init(void)

{

UART1_CR1 = 0x00; //8bit

UART1_CR3 = 0x00;//1 stop bit

UART1_BRR2 = 0x01;

UART1_BRR1 = 0x1A;//4800 baud rate

UART1_CR2 = 0x24;//enable REN and RIEN

}

UART1接收中断函数:

@far @interrupt void UART1_RX_IRQHandler (void)

{

RxBuffer = UART1_DR; //Store the received byte in RxBuffer

return;

}

UART1接收中断向量(设置中断向量,即将中断服务程序的入口填写到中断向量表中)

struct interrupt_vector const _vectab[] =

{

……

{0x82, UART1_RX_IRQHandler},

……

}

(3)特别注意波特率的计算设置方式

波特率通过配置16位除法器UART_DIV来设置

基于stm8s103k3单片机串口UART的正确使用分享

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于单片机在异形曲面在线检测系统中的应用设计

随着三维设计软件常利用对系统模拟优化分析、路况的反馈和理论的计算,能够设计出高水平曲面异形线和截面,...

发表于 2018-10-26 15:19 9次阅读
基于单片机在异形曲面在线检测系统中的应用设计

单片机中的定时器与计数器有何不同,二者的区别是什...

定时器实际上也是工作在计数方式下,只是计数的是固定周期的脉冲,由于脉冲周期固定,由计数值可以计算时间...

发表于 2018-10-26 14:58 4次阅读
单片机中的定时器与计数器有何不同,二者的区别是什...

【每天看电路第32期】数码管显示电路

发表于 2018-10-26 14:36 37次阅读
【每天看电路第32期】数码管显示电路

因为单片机IO按键和LED复用原因,按键这样接行不行?

发表于 2018-10-26 09:26 44次阅读
因为单片机IO按键和LED复用原因,按键这样接行不行?

AD9850工作不稳定经常不能输出

发表于 2018-10-26 09:20 10次阅读
AD9850工作不稳定经常不能输出

单片机串口通讯时,偶尔重复发送字符串

发表于 2018-10-26 09:15 50次阅读
单片机串口通讯时,偶尔重复发送字符串

8051F340驱动ADXL345程序移植到STM32上的问题

发表于 2018-10-26 09:15 6次阅读
8051F340驱动ADXL345程序移植到STM32上的问题

请问AD9838相位可以通过单片机程序可调吗?

发表于 2018-10-26 09:10 10次阅读
请问AD9838相位可以通过单片机程序可调吗?

网上单片机制作“2.4G频率计”方案之我见

注:本文是作者以前发表在其个人博客,现在发布到聚丰开发专栏 在网上看到有朋友发布一个单片机制作2.4...

发表于 2018-10-25 17:01 104次阅读
网上单片机制作“2.4G频率计”方案之我见

STM32单片机外部中断配置讲解

发表于 2018-10-25 16:40 198次阅读
STM32单片机外部中断配置讲解

转学STM32的入门总结和学习步骤

大家可能是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩...

发表于 2018-10-25 16:19 109次阅读
转学STM32的入门总结和学习步骤

嵌入式开发技术路线

发表于 2018-10-25 15:54 142次阅读
嵌入式开发技术路线

基于单片机应用程序编写的七大步骤分享

接到一个单片机项目设计文件之后,并不是马上动手编写程序,而是仔细研究用户提出的技术要求或者技术说明,...

发表于 2018-10-25 15:37 54次阅读
基于单片机应用程序编写的七大步骤分享

基于单片机Stm32f103 DAC电流输出解决...

用的是64封装的芯, 此芯ADC的基准Vref+和电源是同一个端口,Vref-共用电源地。在电池输出...

发表于 2018-10-25 15:20 38次阅读
基于单片机Stm32f103 DAC电流输出解决...

基于单片机设计堆栈的基本概念解析

向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈

发表于 2018-10-25 15:16 25次阅读
基于单片机设计堆栈的基本概念解析

加湿器单片机芯片-单片机开发方案公司

发表于 2018-10-25 14:09 14次阅读
加湿器单片机芯片-单片机开发方案公司

我被红外遥控闪了一下腰

发表于 2018-10-25 11:26 132次阅读
我被红外遥控闪了一下腰

基于KL16的指纹锁低功耗方案

ZLG基于数百厂家的需求共性,设计了基于NXP KL16的指纹锁方案,单触摸休眠状态下达到7.52u...

发表于 2018-10-25 10:26 139次阅读
基于KL16的指纹锁低功耗方案

分享:迪文屏的C编译器,确实方便了太多!

发表于 2018-10-25 10:21 160次阅读
分享:迪文屏的C编译器,确实方便了太多!

学STM32对你来说有什么好处

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。

发表于 2018-10-25 09:06 585次阅读
学STM32对你来说有什么好处

如何利用单片机来驱动继电器

注意:单片机的IO口驱动能力不够,加一片ULN2003来驱动继电器,一个ULN2003可以驱动7个继...

发表于 2018-10-24 16:02 88次阅读
如何利用单片机来驱动继电器

基于51单片机直流电机PWM调速程序

这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、...

发表于 2018-10-24 15:56 125次阅读
基于51单片机直流电机PWM调速程序

打破思维定式——两种键盘扫描方法比较分析

发表于 2018-10-24 11:24 83次阅读
打破思维定式——两种键盘扫描方法比较分析

应广双核单片机应用提示

发表于 2018-10-24 11:24 67次阅读
应广双核单片机应用提示

用一条IO口实现两个按键功能

发表于 2018-10-24 11:24 85次阅读
用一条IO口实现两个按键功能

基于S3C6410裸机程序中可能用到的函数分享

*函数:voidSetEINT_TriggerMode(u8EINT0_N,u8Trigger) ...

发表于 2018-10-23 16:00 49次阅读
基于S3C6410裸机程序中可能用到的函数分享

基于LED图文显示屏控制系统的设计

LED显示屏系统组成 LED图文显示屏系统由软件控制系统、无线传输系统、设备主控制器、LED显示点阵...

发表于 2018-10-23 15:35 84次阅读
基于LED图文显示屏控制系统的设计

双核单片机之初体验--2

发表于 2018-10-23 10:08 107次阅读
双核单片机之初体验--2

双核单片机之初体验--1

注:本文是作者以前发表在其个人博客,现在 发布到 聚丰开发专栏 不 经意间,酷睿双核已经成为电脑CP...

发表于 2018-10-23 09:08 407次阅读
双核单片机之初体验--1

单片机的构成及功能特点解析

单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器)...

发表于 2018-10-22 15:23 93次阅读
单片机的构成及功能特点解析

51单片机4种简单的扩展方法

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展。

发表于 2018-10-22 10:37 235次阅读
51单片机4种简单的扩展方法

单片机的发展有哪几个阶段

单片机(Microcontrollers)诞生于1971年,早期的SCM单片机都是8位或4位的。其中...

发表于 2018-10-21 10:15 276次阅读
单片机的发展有哪几个阶段

单片机控制继电器原理是怎样的?

单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大...

发表于 2018-10-20 11:43 486次阅读
单片机控制继电器原理是怎样的?

详解单片机里面的中断优先级

在讲中断产生背景的时候,我们仅仅讲了看电视和烧水的例子,但是实际生活当中还有更复杂的,比如我正在看电...

发表于 2018-10-20 09:57 90次阅读
详解单片机里面的中断优先级

如何写出高效优美的单片机C语言代码

将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排...

发表于 2018-10-19 15:55 319次阅读
如何写出高效优美的单片机C语言代码

简介郭天祥及人物经历

郭天祥1983年出生于新疆伊宁,曾就读于哈尔滨工程大学,后接触单片机,已成为单片机领域的知名人士。名...

发表于 2018-10-19 08:32 147次阅读
简介郭天祥及人物经历

基于使用STM32F103单片机,实现64Mbi...

简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。ARM主控芯片...

发表于 2018-10-18 15:19 99次阅读
基于使用STM32F103单片机,实现64Mbi...

应广单片机系列——基本应用程序框架

发表于 2018-10-18 12:49 172次阅读
应广单片机系列——基本应用程序框架

基于单片机学习的条件和学习步骤简述

单片机是大专学校电类专业的一门普通课,有些学校甚至把它列为选修课,在众多课程中,没有显出它有多么重要...

发表于 2018-10-17 16:57 98次阅读
基于单片机学习的条件和学习步骤简述

基于单片机EEPROM解析

我们板子上使用的这个器件是 24C02,是一个容量大小是 2Kbits,也就是 256 个字节的 E...

发表于 2018-10-17 16:46 117次阅读
基于单片机EEPROM解析

做单片机的朋友你可千万先把电源弄好!

说一个我获得的教训,老板的一个朋友委托我们给他做一个小型控制器,因为要求的工期比较急,没时间做线路板...

发表于 2018-10-17 08:56 360次阅读
做单片机的朋友你可千万先把电源弄好!

应广单片机系列——高速I2C接口

发表于 2018-10-16 18:45 287次阅读
应广单片机系列——高速I2C接口

怎样通过UART进行标准IO?

在工程的ASF\sam\utils\syscalls\gcc\syscalls.c文件中,ASF已经...

发表于 2018-10-16 16:25 54次阅读
怎样通过UART进行标准IO?

基于单片机80C196KB和可编程逻辑器件EPM...

该系统中待采集显示电压信号共16路,动态电压范围为-22~+27 V。由于这些电压信号变化频率较低,...

发表于 2018-10-15 17:08 72次阅读
基于单片机80C196KB和可编程逻辑器件EPM...

单片机与PC串口通信的程序及电路图详解

单片机与pc串口通信程序及电路图

发表于 2018-10-14 10:28 492次阅读
单片机与PC串口通信的程序及电路图详解

中国的MCU正在逆袭的道路上走得越来越好

早期的微控制器是将一个计算机集成到一个芯片中,实现嵌入式应用,故称单片机。微处理器和单片机从上个世纪...

发表于 2018-10-13 11:22 379次阅读
中国的MCU正在逆袭的道路上走得越来越好

单片机晶振不起振的40个原因分析

单片机晶振不起振原因分析遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?(1) P...

发表于 2018-10-12 16:06 185次阅读
单片机晶振不起振的40个原因分析

基于STM32定时器实现毫秒延时函数

STM32定时器包含基本定时器、通用定时器和高级定时器,其中TIM6和TIM7是STM32当中的基本...

发表于 2018-10-12 15:54 122次阅读
基于STM32定时器实现毫秒延时函数

基于高性能8位AVR® RISC CPU,其灵活...

贸泽电子 (Mouser Electronics) 即日起开始分销Microchip Technol...

发表于 2018-10-11 10:32 101次阅读
基于高性能8位AVR® RISC CPU,其灵活...

浅析基于51单片机嵌入式软件和硬件的同步仿真

这样就可以使用TFTP向Mini Web卡仿真系统传递网页文件,使用IE浏览Mini Web卡仿真系...

发表于 2018-10-11 09:12 454次阅读
浅析基于51单片机嵌入式软件和硬件的同步仿真

MAX32625评估板如何在keil上搭建开发平...

本期视频主要介绍了怎样在Keil平台上为Maxim低功耗处理器搭建开发的步骤。

发表于 2018-10-11 03:27 151次阅读
MAX32625评估板如何在keil上搭建开发平...

51单片机应用广泛的真正原因是什么?

今天告诉你们一个秘密,为什么我们学的是51单片机,为什么在中国无论是工程师还是大学教师还是大学生都喜...

发表于 2018-10-10 17:41 811次阅读
51单片机应用广泛的真正原因是什么?

智能锁的5大优点及4大类型

智能锁区别于一般的机械锁,具有自动电子感应锁定系统,他会自动感应到门处于关闭状态时,系统将自动上锁。...

发表于 2018-10-10 10:37 235次阅读
智能锁的5大优点及4大类型

浅析51单片机最小系统排阻作用

一些精密排阻采用四位数字加一个字母的标示方法(或者只有四位数字)。前三位数字分别表示阻值的百位、十位...

发表于 2018-10-09 17:17 405次阅读
浅析51单片机最小系统排阻作用

单片机开发中应掌握的几个基本技巧

防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了...

发表于 2018-10-08 16:31 422次阅读
单片机开发中应掌握的几个基本技巧

如何轻松学习51单片机?

单片机是微机的一种,现时有8051、AVR、ARM7、ARM9等系列,其中 “8051”是源自于In...

发表于 2018-10-08 15:17 489次阅读
如何轻松学习51单片机?

基于AT89C51单片机在变频调速恒压供水系统中...

假设供水系统共有2台水泵,其中水泵1为变频运行,水泵2为工频运行,由接触器分别启动或停止,单片机通过...

发表于 2018-10-08 15:10 110次阅读
基于AT89C51单片机在变频调速恒压供水系统中...

MPLAB® X集成开发环境现已支持AVR®单片...

对AVR架构不熟悉的开发人员可以利用跨多个操作系统的统一开发平台轻松开始设计工作。

发表于 2018-10-08 12:44 983次阅读
MPLAB® X集成开发环境现已支持AVR®单片...

单片机和嵌入式设计的区别

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们...

发表于 2018-10-06 14:39 183次阅读
单片机和嵌入式设计的区别

单片机和嵌入式设计的区别

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们...

发表于 2018-10-06 14:39 83次阅读
单片机和嵌入式设计的区别

单片机和嵌入式设计的区别

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们...

发表于 2018-10-06 14:39 77次阅读
单片机和嵌入式设计的区别

单片机和嵌入式设计的区别

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们...

发表于 2018-10-06 14:39 312次阅读
单片机和嵌入式设计的区别

单片机和嵌入式系统linux的区别

在如今高速发展的社会下,电子信息技术的更新迭代相当迅速,想要不被社会淘汰,就要不断更新自己的技术水平...

发表于 2018-10-06 10:46 172次阅读
单片机和嵌入式系统linux的区别

浅谈单片机上电复位后端口的状态问题

在MSP430单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态。就这...

发表于 2018-10-06 09:52 271次阅读
浅谈单片机上电复位后端口的状态问题

单片机硬件仿真与烧写程序结果同的原因分析

通常仿真器的驱动能力比单片机要强;可以分两步检查,一是分别用仿真器与单片机时对应IO口波形进行对比,...

发表于 2018-10-02 11:45 361次阅读
单片机硬件仿真与烧写程序结果同的原因分析

单片机常见报警方式有哪几种?

单片机常见的6种报警方式!

发表于 2018-10-01 17:22 411次阅读
单片机常见报警方式有哪几种?

基于MCU单片机在蜂鸣器系统中的应用设计

我们都知道一般的定时器为16位或8位循环计数,例如对于16位的计数器当计数器数值从0增加到65535...

发表于 2018-09-30 15:30 235次阅读
基于MCU单片机在蜂鸣器系统中的应用设计

基于Intel单片机在智能监控平台中的应用设计

硬件配置应针对分析检测器的不同组合方式可在各模块中选择,如该平台用于二组分分析时,则只接入两路的操作...

发表于 2018-09-29 16:01 100次阅读
基于Intel单片机在智能监控平台中的应用设计

基于采用单片机在仪表里用PWM方式D/A的构成原...

在用单片机制作的变送器类和控制器类的仪表中,需要输出1—5V或4—20mA的直流信号的时候,通常采用...

发表于 2018-09-29 16:01 146次阅读
基于采用单片机在仪表里用PWM方式D/A的构成原...

基于80C196KB单片机在实时数据采集显示系统...

整个系统主要由信号预处理、信号选通、单片机采集、双机数据传输以及数据处理显示等模块构成。其中,信号选...

发表于 2018-09-28 15:18 118次阅读
基于80C196KB单片机在实时数据采集显示系统...