stm8的c语言编程--uart应用

stm8的c语言编程--uart应用

ID:8799976

大小:52.50 KB

页数:8页

时间:2018-04-08

stm8的c语言编程--uart应用_第1页
stm8的c语言编程--uart应用_第2页
stm8的c语言编程--uart应用_第3页
stm8的c语言编程--uart应用_第4页
stm8的c语言编程--uart应用_第5页
资源描述:

《stm8的c语言编程--uart应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、STM8的C语言编程(8)--UART应用 串口通讯也是单片机应用中经常要用到,今天的实验就是利用STM8的UART资源,来进行串口通讯的实验。实验程序的功能是以中断方式接收串口数据,然后将接收到的数据以查询方式发送到串口。程序代码如下,首先要对STM8的UART进行初始化,初始化时要注意的是波特率寄存器的设置,当求出一个波特率的分频系数(一个16位的数)后,要将高4位和低4位写到BRR2中,而将中间的8位写到BRR1中,并且必须是先写BRR2,再写BRR1。同样也是利用ST的开发工具,生成一个C语言的框架,然后修改其中的main.c,同时由于需要用到中断服

2、务,因此还要修改stm8_interrupt_vector.c。修改后,编译连接,然后下载到开发板上,再做一根与PC机相连的线,把开发板的串口与PC机的串口连接起来,注意,2、3脚要交叉。在PC机上运行超级终端,设置波特率为9600,然后每按下一个按键,屏幕上就显示对应的字符。修改后的main.c和stm8_interrupt_vector.c如下:// 程序描述:初始化UART,以中断方式接收字符,以查询方式发送// UART通讯参数:9600bps,8位数据,1位停止位,无校验 #include"STM8S207C_S.h"//函数功能:初始化UART/

3、/输入参数:无//输出参数:无//返回值:无//备注:无voidUART3_Init(void){   LINUART_CR2=0;    //禁止UART发送和接收 LINUART_CR1=0;   //b5=0,允许UART//b2=0,禁止校验 LINUART_CR3=0;    //b5,b4=00,1个停止位                           //设置波特率,必须注意以下几点://(1)必须先写BRR2//(2)BRR1存放的是分频系数的第11位到第4位,//(3)BRR2存放的是分频系数的第15位到第12位,和第3位到第0位//

4、例如对于波特率位9600时,分频系数=2000000/9600=208//对应的十六进制数为00D0,BBR1=0D,BBR2=00 LINUART_BRR2=0; LINUART_BRR1=0x0d;     //实际的波特率分频系数为00D0(208)//对应的波特率为2000000/208=9600 LINUART_CR2=0x2C;     //b3=1,允许发送//b2=1,允许接收//b5=1,允许产生接收中断} //函数功能:从UART3发送一个字符//输入参数:ch--要发送的字符//输出参数:无//返回值:无//备   注:无voidUAR

5、T3_SendChar(unsignedcharch){ while((LINUART_SR&0x80)==0x00); //若发送寄存器不空,则等待 LINUART_DR=ch; //将要发送的字符送到数据寄存器}main(){ //首先初始化UART3 UART3_Init(); _asm("rim");        //允许CPU全局中断 while(1) //进入无限循环 { }                             } //函数功能:UART3的接收中断服务程序//输入参数:无//输出参数:无//返回值:无@far@interr

6、uptvoidUART3_Recv_IRQHandler(void){ unsignedcharch;    ch=LINUART_DR;         //读入接收到的字符 UART3_SendChar(ch);      //将字符发送出去}                                            /*  BASICINTERRUPTVECTORTABLEFORSTM8devices*  Copyright(c)2007STMicroelectronics*/ typedefvoid@far(*interrupt_hand

7、ler_t)(void);structinterrupt_vector{      unsignedcharinterrupt_instruction;      interrupt_handler_tinterrupt_handler;}; @far@interruptvoidNonHandledInterrupt(void){/*inordertodetectunexpectedeventsduringdevelopment,itisrecommendedtosetabreakpointonthefollowinginstruction*/return;

8、}externvoid_stext();    /*

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

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

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