stmf串口通信寄存器设置

stmf串口通信寄存器设置

ID:33797317

大小:354.09 KB

页数:5页

时间:2019-03-01

stmf串口通信寄存器设置_第1页
stmf串口通信寄存器设置_第2页
stmf串口通信寄存器设置_第3页
stmf串口通信寄存器设置_第4页
stmf串口通信寄存器设置_第5页
资源描述:

《stmf串口通信寄存器设置》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、STM32f103寄存器配置串口通信主程序接收数据,上位机串口发送的数据已回车键结束,单片机接之后将所有数据发回。#include"stm32f10x_lib.h"#include"sys.h"//#include"ioshezhi_jb.h"unsignedcharres;//串口接受数据临时存储unsignedcharenddd=0;//接受完成标志unsignedintlen=0;//数据长度unsignedcharshubiao[200];//数据存储表,限制长度为200字节unsignedintt;//通信数据操作for循环控制unsignedl

2、ongi=0;intmain(){Stm32_Clock_Init();//系统时钟设置//io_init();//io时钟以及输入输出选项设置RCC->APB2ENR

3、=0x4000;//开启USART1时钟;RCC->APB2ENR

4、=0x0004;//开启GPIOA口时钟;GPIOA->CRH&=0xfffff00f;//PA9、PA10IO设置清零GPIOA->CRH

5、=0x000008b0;//P9推挽输出,max50MHZ;P10上拉输入RCC->APB2RSTR

6、=0x4000;//串口复位RCC->APB2RSTR&=0xbfff;//串口

7、停止复位//USART1->BRR=0x1d4c;//主频72M时,波特率为9600USART1->BRR=0x0ea6;//主频36M时,波特率为9600//USART1->BRR=0x0139;//主频36M时,波特率为115200//USART1->CR1

8、=0x200c;//串口开,发送长度8字节,无校验,发送开,接收开;USART1->CR1

9、=0x340c;//串口开,发送长度9字节,偶校验,发送开,接收开;//(有效数据还是8位长度)while(1){//shuru_init();//计算输入口的值if(0x0020==((USART1->S

10、R)&0x0020))//如果接受到了一个字节的数据{res=USART1->DR;//读取串口寄存器数据并存在临时位置resif(res!=0x0a){shubiao[len]=res;len++;}//如果该数据不是回车符的最后一个//字节0x0a,则存入数表5/5else{if(shubiao[len-1]==0x0d){enddd=1;len--;};};};//如果是0x0a,则判断前一个字符是不是0x0d,(回车符ASCII码为0x0a0d)//是的话则标记接受完成标志eddd并删掉已接受到的前一个字节的数据if(enddd==1)//如果接受

11、完成了{for(t=0;tDR=shubiao[t];//while((USART1->SR&0X40)==0);//等待当前字节数据发送结束};enddd=0;for(t=0;t<=len;t++){shubiao[t]=0;};//将数表中数据清零len=0;};i++;//if(i==20000){PC151;};//程序运行状态指示灯//if(i==40000){PC150;i=0;};};}寄存器注释:、时钟使能寄存器RCC->APB2ENR参考不完全手册P108页面需要开启的PORTA

12、和USART1的时钟使能位,分别在bit2和bit14,只要将这两位置1就可以使能PORTA和USART1的时钟了。寄存器各位功能定义如下:、串口复位寄存器RCC->APB2RSTR参考不完全手册P124页面串口1的复位是通过配置APB2RSTR寄存器的第14位来实现的。APB2RSTR寄存器的各位描述如图8.1.1所示。串口1的复位设置位在APB2RSTR的第14位,通过向该位写1复位串口1,写0结束复位。其他串口的复位位在APB1RSTR里面。波特率设置寄存器USART1->BRR参考不完全手册P100页面5/5STM32的每个串口都有一个自己独立的波

13、特率寄存器USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。USART_BRR的最低4位(位[3:0])用来存放小数部分DIV_Fraction,紧接着的12位(位[15:4])用来存放整数部分DIV_Mantissa,最高16位未使用。计算方法为:首先计算DIV=主频/(波特率*16)比如主频为36MHZ,波特率要设置为115200时,则DIV=36000000/(115200*16)=19.53125;整数部分DIV_Mantissa=19=0x13;小数部分DIV_Fraction=0.53125*16=8.5;取9,即0x9;故U

14、SART1->BRR=0x0139发送接收数据格式以及串口开关设置

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

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

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