stm8串口收发(典型)

stm8串口收发(典型)

ID:14313757

大小:32.50 KB

页数:3页

时间:2018-07-27

stm8串口收发(典型)_第1页
stm8串口收发(典型)_第2页
stm8串口收发(典型)_第3页
资源描述:

《stm8串口收发(典型)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、最近开始使用stm8s103k3单片机了。据说很好,确实不错。前几天已经试过了GPIO,Timer2,ADC的功能,都比较容易,唯独串口UART使用,破费周折,写出来,供大家借鉴。我使用的是stm8s103k3,32脚单片机,这个使用手册上说了UART1,UART2,UART3。但是引脚的功能图上只有UART1,并且你打开stm8s103k.h的头文件,里面也只有UART1寄存器的定义说明。所以我认为只有UART1。既然有这个功能,那就用吧,我以为直接可以连接到电脑的串口(COM1),就可以使用了,其实不可以。单片机即使写着提供UART通讯功能,也要连接MA

2、X232转接芯片,我就在这里耽误了许多时间。1、使用stm8s103上的串口和计算机com口通许的硬件连接:2、软件设置    (1)发送数据配置1)编程UART_CR1的M位来定义字长。2)在UART_CR3中编程停止位的位数。3)按下列顺序编写波特率寄存器选择要求的波特率。    a)UART_BRR2    b)UART_BRR14)设置UART_CR2中的TEN位来使能发送5)把要发送的数据写进UART_DR寄存器main.c程序如下:#include"stm8s103k.h"voidUART1_Init(void){  UART1_CR2=0x00

3、;//使发送禁用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=0x

4、18;  UART1_Init();  while(1)  {    unsignedchari;    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,或0

5、x3B.(2)接收数据1)编程UART_CR1的M位来定义字长。2)在UART_CR3中编程停止位的位数。3)按下列顺序编写波特率寄存器选择要求的波特率。    a)UART_BRR2    b)UART_BRR14)设置UART_CR2中的REN位来使能接收5)读UART_DR寄存器    a)查询:查询SR中标志位RXNE(读数据寄存器非空)    b)中断:需使能CR2中的RIEN(接收中断使能)标志位查询方式:初始化:voidUART1_Init(void){UART1_CR1=0x00;//8bitUART1_CR3=0x00;//1stopbit

6、UART1_BRR2=0x01;UART1_BRR1=0x1A;//4800baudrateUART1_CR2=0x04;//enableREN}Main()函数:while(!(UART1_SR&0x20));//LoopuntiltheUART1ReceiveDataRegisterisnotemptyRxBuffer  =UART1_DR;//StorethereceivedbyteinRxBuffer中断方式:初始化:voidUART1_Init(void){UART1_CR1=0x00;//8bitUART1_CR3=0x00;//1stopbit

7、UART1_BRR2=0x01;UART1_BRR1=0x1A;//4800baudrateUART1_CR2=0x24;//enableRENandRIEN}UART1接收中断函数:@far@interruptvoidUART1_RX_IRQHandler(void){  RxBuffer=UART1_DR;//StorethereceivedbyteinRxBuffer  return;}UART1接收中断向量(设置中断向量,即将中断服务程序的入口填写到中断向量表中)structinterrupt_vectorconst_vectab[]={  ……  

8、{0x82,UART1_RX_IRQHandler}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。