stm8s103k3 周期 捕获_基于stm8s103k3单片机串口UART的正确使用分享
最近开始使用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来设置
打开APP精彩内容
点击阅读全文
stm8s103k3 周期 捕获_基于stm8s103k3单片机串口UART的正确使用分享相关推荐
- sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表
请点上面蓝色字 即可免费订阅! 1.简述 本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压 ...
- delphi 数字识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- stm32车牌识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- arduino智能浇花系统_基于Arduino单片机的智能浇花器
Internal Combustion Engine & Parts • 119 • 基于Arduino单片机的智能淺花器 卞 云 松 ;张 国 祥 ;任 佳 豪 :陆晨雨 (江海职业技术学院 ...
- 智能手环功能模块设计_基于51单片机的智能手环蓝牙模块设计
龙源期刊网 http://www.qikan.com.cn 基于 51 单片机的智能手环蓝牙模块设计 作者:王烈进 王游司 陈洪燕 孙超 卢宇 来源:<电脑知识与技术> 2018 年第 2 ...
- 单片机拟真电路图软件_基于MSP430单片机设计的高效数控直流电源及其测试方法与流程...
本发明涉及直流电源 技术领域: ,具体涉及一种基于MSP430单片机设计的高效数控直流电源及其测试方法. 背景技术: :电压电流源是很多电子仪器设备研制的关键设计之一,电源在工作时产生的变动或误差,将 ...
- 单片机多功能电子琴课设_基于51单片机的多功能电子琴设计.doc
基于51单片机的多功能电子琴设计 基于51单片机的多功能电子琴的设计 摘要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编 ...
- 基于单片机的超市储物柜设计_基于51单片机对电子储物柜系统的设计
电路描述: 安全是我们日常的生活中最关心的问题. 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全. 为了对于门访问安全 因此,我们打算通过引进一个电子密码锁系统,该系统包括 ...
- 51单片机计算器_基于51单片机的倒计时温度检测报警器
基于51单片机的倒计时温度检测报警器 学习单片机断断续续半年了,在学长学姐的教学帮助下,完成了51单片机的入门学习,开始实践做项目,在一周时间内设计和制作出个人项目.起初,我设计和选择的是12864显 ...
- 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟
今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...
最新文章
- ORA-12514 监听程序当前无法识别连接描述符中的服务
- 做个有产品意识的工程师
- 怎样在计算机页面加密,怎么给文件加密并加密后隐藏起来?
- XAML实例教程系列 – 对象和属性
- Non-interger Area 分类讨论 奇偶 取模 牛客练习赛95
- mysql中binlog_format模式与配置详解
- 论文浅尝 - ICML2020 | 拆解元学习:理解 Few-Shots 任务中的特征表示
- python 2.7安装某些包出现错误:libxml/xmlversion.h:没有那个文件或目录
- 定时器和promise_如何讲清楚Promise?
- uvm设计分析——tlm
- C#编程VS开发工具安装Nupkg包
- 常识——手机当作无线网卡,通过usb与电脑共享网络,让电脑网卡支持5g网络
- cass简码大全_CASS分类简码
- Composer 基础使用
- Revit API 开发周边:对 Element 进行 Reflection
- 自定义控件其实很简单 二
- 简写的最大公约数写法(不能再忘了)
- Unreal4下载安装教程
- el-drawer隐藏滚动条(兼容firefox浏览器)
- Comparator接口实现排序