STM8教程-串口及其应用_第1页
STM8教程-串口及其应用_第2页
STM8教程-串口及其应用_第3页
STM8教程-串口及其应用_第4页
STM8教程-串口及其应用_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM8教程-第十二章-串口及其应用第十二章串口及其应用前面三节介绍了STM8的IO口以及时钟编程。这一节我们将学习STM8的串口。通过本节学习,你将了解到STM8串口的基本使用方法。前面三节介绍了STM8的IO口操作以及时钟编程。这一节我们将学习STM8的串口。作为软件开发重要的调试手段,串口的作用是很大的。在调试的时候可以用来查看和输入相关的信息。在使用的时候,串口也是一个和外设(比如GPS,GPRS模块等)通信的重要渠道。STM8的串口资源相当丰富的,功能也相当强劲。STM8有波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIRENDEC规范接下来我们将从寄存器层面,告诉您如何设置串口,以达到我们最基本的通信功能。本实例中,我们将实现利用串口1不停的打印一个信息到电脑上,以及例程二的同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。串口最基本的设置,就是波特率的设置。STM8的串口使用是很简单的。配置步骤:.编程UART_CR1的M位来定义字长。.在UART_CR3中编程停止位的位数。.按下列顺序编写波特率寄存器选择要求的波特率UART_BRR2UART_BRR1.设置UART_CR2中的TE位来使能发送模式5把要发送的数据写进UART_DR寄存器(此动作清除TXE位)。在只有一个缓冲器的情况下,对每个待发送的数据重复此步骤。F面,我们就简单介绍下这几个与串口基本配置直接相关的寄存器。1、UARTx_CRl(x是指对应的UART,STM8有多个UART,详细请见对应数据手册)R8T8CARTDMIAKEPCEVPSPIEXrw rw rw rw rw r< rw rwR8、T8是在数据字长定义为9位时才使用的,对应的是接收第8位和发送第8位(都是从第0位开始算)UARTD是UART的使能位,0的时候使能UART,1的时候不可以用UART,默认0,M是定义串口的字长,0为8位字长,1是9位的字长下面的PECE,PS,PIEN分别是奇偶效验,奇偶效验选择,效验中断使能。由于我们没有定义奇偶效验在此不再详细说明,默认就可以。2、UARTx_CR27 6 5 4 3 2 1 0TIENTCIEXRIENILIENTEXRENESBKrw rw nr rw rw rw nr rw控制寄存器2主要负责管理中断和发送接收的使能TIEN、TCIEN、RIEN、ILIEN分别对应发送中断,发送完成中断,接收中断以及IDLE中断TEN是发送使能,当TEN=1的时候我们就可以通过串口进行发送数据,当然前提是我们已经设置好对应的寄存器REN是接收使能,当REN=1的时候我们可以通过串口接收其它设备的数据RWU接收唤醒SBK发送断开帧1、UARTx_CR37 6 5 4 3 2 1 D保留|LNEX 5rOP[L:O: CLKD|CF(LCPIIALBCLiw tnv i¥ n? rt ri在这个寄存器中我们主要使用了STOP,也就是设置停止位数LINENLin模式的使能,这里我们不详细说明STOP设置停止位数001个停止位01保留102个停止位111.5个停止位CLKEN时钟使能,由于我们没有采用3根线,只用了UART_RX和UART_TX所以不需要设置这个寄存器,默认就可以CPOL、CPHA、LBCL对应着的是时钟极性,时钟相位以及最后一个时钟脉冲,详细介绍请见寄存器手册2、波特率有关寄存器

Example:Toobtain9600baudwith 笈er-10MHz,UARTDIV=10000Q0Q/9600UART_DIV=1042d=D4l2hSeelabieS3.1JLJUyyUART_BRR1rsgister=41UART_BRR1rsgister=41打UART_BRR2

register=02h3、数据寄存器7 6 5 4 3 2 10DR[7:0]rv rw it r* rr r» rw rw发送和接受的数据通过这个寄存器的读写就可以实现4、状态寄存器7 6 □ -1 3 2 1 (17XE V :[>LE阡LHE :” FE[FE1 ic__rO rc_>0 r r r r i通过读取这个寄存器可以知道UART的工作状态我们本实验就需要查询这个寄存器的某个位,来清除数据是否发送完毕TXE发送数据寄存器空0的时候非空,1为空TC发送完成TC发送完成0未完成1完成发送RXNE读数据寄存器非空0数据没有收到1数据收到其它的位分别为检查到IDLE总线,过载错误,噪声标志位,帧错误,奇偶效验错误简单的寄存器就结束到此,除此之外还有其它很多寄存器望读者查阅寄存器手册有了以上的基础,我们可以开始这一节的软件编写了在开始软件代码编程之前,先说明一下我们的硬件我们的实验板是共用一根USB线实现多功能操作,分别是下载程序功能,供电功能以及串口功能,传统的串口需要串口接口,考虑到方便我们自己通过PL2303把串口转成可以通过USB进行通信,下面开始我们的例程一,简单的发送数据给终端例程一、简单数据发送#include"iostm8s207rb.h〃voiddelay_ms(intvalue);intmain(void){unsignedchartemp=0;CLK_CKDIVR=0x00;//主频为16MUART1_CR1=0x00;//关闭UART,设置数据位8位,禁止奇偶效验,禁止中断UART1_CR3=0x00;〃一位停止位,默认值UART1_BRR2=0x0b;〃设置波特率为115200UART1_BRR1=0x08;UART1_CR2_TEN=1;〃使能发送while⑴{while(!UART1_SR_TC);//等待一帧发送完毕,再传送下一帧UART1_DR=temp;temp++;if(temp>=255)temp=0;delay_ms(100);}}/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&***********************************&&&&&&&&&*********简单延时程序&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&***********************************&&&&&&&&&**********/voiddelay_ms(intvalue){inti,j;if(value<1)value=1;for(i=0;i!=value;++i)

for(j=0;j!=5000;++j);

编译下载后,打开串口调试助手,复位单片机就可以看到对应的数据输出,如下图:可以看出是从0递进的数,因为我们的串口设置是115200波特率,所以串口调试助手也对应这个波特率例程二、串口接收及发送我们实现的功能是通过串口接收电脑的数据,并把对应的数据发送给电脑。这里我们采用了中断的方式来接受。中断这个字眼是第一次出现在我们的实验中,所以略为简要说一下中断。简单来说中断的产生会让CPU停止当前的工作而转到特定的地方运行预先设定好的程序。我们的例程就是在接到到串口的数据后,由单片机硬件置位而产生一次接收数据的中断,本身中断向量号是18,但是IAR的规定要加上2,所以这个中断号是20,转为16进制是0x14因此我们可以在这个中断的服务函数中把刚接受到数据发回给电脑,软件代码如下:#include"iostm8s207rb.h〃voiddelay_ms(intvalue);intmain(void){CLK_CKDIVR=0x00;//主频为16MUART1_CR1=0x00;//关闭UART,设置数据位8位,〃禁止奇偶效验,禁止中断UART1_CR3=0x00;〃一位停止位,默认值UART1_BRR2=0x0b;//设置波特率为115200UART1_BRR1=0x08;UART1_CR2_TEN=1;//使能发送UART1_CR2_RIEN=1;//接收中断使能UART1_CR2_REN=1;〃使能接收PD_DDR_DDR0=1;PD_CR1_C10=1;PD_ODR_ODR0=1;asm("rim");//开全局中断while⑴{delay_ms(100);}}/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&***********************************&&&&&&&&&*********简单延时程序&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&***********************************&&&&&&&&&**********/voiddelay_ms(intvalue)inti,j;if(value<1)value=1;for(i=0;i!=value;++i)for(j=0;j!=5000;++j);}#pragmavector=0x14―interrupt voidUART1_RX_IRQHandler(void){unsignedchartemp;temp=UART1_DR;PD_ODR_ODR0=~PD_ODR_ODR0;〃指示灯while(!UART1_SR_TC);〃等待一帧发送完毕,再传送下一帧UART

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论