

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32flO3寄存器配置串口通信主程序接收数据,上位机串丨|发送的数据己回车键结束,单片机接之后将所有数据发回。#include,stm32flOxJib.hH#includesys.h/#include,ioshezhijb.h,串丨I接受数据临时存储接受完成标志数据长度数据存储表,限制长度为200字节通信数据操作for循坏控制unsignedcharres;unsignedcharenddd=O;unsignedintlen=O;unsignedcharshubiao200;unsignedintt;unsignedlongi=0;intmain()Stm32_Clock_lnit()
2、;/io_init();系统时钟设置/io时钟以及输入输出选项设置RCC-APB2ENR|=0x4000;RCC-APB2ENR|=0x0004;开启USART1时钟:Q开启GPIOAI1时钟;(z)GPIOA-CRH&=OxfffffOOf;GPIOA-CRH|=0x000008b0;PA9、PA10IO设置清零/P9推挽输出,max50MH乙P10拉输入RCC-APB2RSTR|=0x4000;RCC-APB2RSTR&二Oxbfff;串1复位串I停止复位Q/USARTl-BRR=0xld4c;USARTl-BRR=0x0ea6;/USARTl-BRR=0x0139;主频72M时,波特率为
3、9600(5)主频36M时,波特率为9600主频36M时,波特率为115200/USARTl-CRl|=0x200c;USARTl-CRl|=0x340c;串II开,发送长度8字节,无校验,发送开,接收开;串丨1开,发送长度9字节,偶校验,发送开,接收开;/(有效数据还是8位长度)while(1)/shuru_init();计算输入II的值if(0x0020=(USARTl-SR)&0x0020)如果接受到了一个字节的数据res=USARTl-DR;读取串II寄存器数据并存在临时位置resif(res!=OxOa)shubiaolen=res;len+;/如果该数据不是回车符的最后一个字节Ox
4、OaJiJ存入数表elseif(shubiaolen-l=OxOd)enddd=l;len-;;;如果是OxOa,则判断前一个字符是不是OxOd,(回车符ASCII码为OxOaOd)是的话则标记接受完成标志eddd并删掉已接受到的前一个字节的数据if(enddd=l)for(t=0;tDR=shubiaot;while(USARTl-SR&0X40)=0);enddd=O;for(t=0;tAPB2RSTR参考不完全手册P124页面串II1的复位是通过配置APB2RSTR寄存器的第14位来实现的。APB2RSTR寄存器的各位描述如图8.1.1所示。串II1的复位设置位在APB2RSTR的第14
5、位,通过向该位写1复位串n1,写0结束复位。其他串I的复位位在APB1RSTR里面。31302928272625242322212019181716保留1514131211109876513210ADC3USART1TIMSSPT1TIMlADC2ADC1IOPGIOPFIOPEIOPDIOPCIOPBIOPA保留AFIORSTRSTRSTRSTRSTRSTRSTRSTRSTRSTRSTRSTRSTRSTRSTrwrwrwrwrwrwrwIFrwrwrwrwrwrwresrw图&1.1APB2RSTR寄存器各位描述波特率设置寄存器USART1-BRR参考不完全手册P100页面STM32的每个串
6、II都有一个自己独立的波特率寄存器USART.BRR,通过设置该寄存器就可以达到配置不同波特率的目的。USART_BRR的最低4位(位3:0)用来存放小数部分DIV_Fraction,紧接着的12位(位15:4)用来存放整数部分DIV_Mantissa,最高16位未使用。31302928272625242322212019181716保留1514131211109876543210DrJfantissalll:01DIV_Frac*ion3:0rwrwrwrwrwrwrwrxrwrwrwrwrwrwrwrw位31:16保留位硬件强制为0位15:4DIV.Mantissa11:0:USARTDI
7、V的整数部分这12位定义ZUSART分频器除法因子(USARTDIV)的整数部分。位3:0DIV_Fraction3:0:USARTDIV(l9小数部分这4位定义了USART分频器除法冈子(USARTDIV)的小数部分。图532寄存器USART_RRR各位描述计算方法为:首先计算DIV=主频/(波特率*16)比如主频为36MHZ,波特率要设置为115200时,则DIV=36000000/(115200*16)=19.53125;整数部分DIV_Mantissa=19=0xl3;小数部分DIV_Fraction=0.53125*16=8.5:取9,即0x9;故USARTl-BRR=0x0139(
8、6)发送接收数据格式以及串II开关设置USART1-CR1参考中文手册542页STM32的每个串II都有3个控制寄存器USART_CR13,串II的很多配置都是通过这3个寄存器来设置的。这里我们只要用到USART_CR1就可以实现我们的功能了,该寄存器的各位描述如下图所示:25.6.4控制寄存器1(USART_CR1)地址偏移:OxOC复位值:0x000031302928272625242322212019181716保留151413121110987643210保留UEMWAKEPCEPSPEIETXEIETCIERXNEIEIDLEIETERERWlSBKresrvrwTWrwrwrwIV
9、rwrvrwrwrwrwrw该寄存器的高18位没有用到,低14位用于串丨1的功能设置。13.UE为串I使能位。1:开启串1功能;0:关闭。12.M为字长选择位。0:串丨I数据寄存器USART_DR收发数据长度为8个字长外加1个停止位;1:9位长度,1个停止位11.唤醒方式选择位。0:被空闲总线唤醒:1:被地址标记唤醒。(这里默认设置为0)10.PCE为校验使能位。0:禁止校验;1:使能校验。9.PS为校验位选择。0:偶校验;1:奇校验。8.PE中断使能。0:禁止产生中断;1:当USART_SR中PE为1时产生串II中断。默认07.TXIE为发送缓冲区空中断使能位。1:当USART_SR中的TX
10、E位为1时将产生串II中断。6.TCIE为发送完成中断使能位。1:当USART_SR中的TC位为1时将产生串II中断。5.RXNEIE为接收缓冲区非空中断使能。1:当USART_SR中的ORE或者RXNE位为1时将产生串口中断。4.接收缓冲区非空中断使能。0:禁止产生中断;1:当USART_SR中的ORE或者RXNE为1时,产生串II中断。(这里默认设置为0)3.TE为发送使能位。1:开启串口的发送功能。2.RE为接收使能位。1:开启串口的接收功能。1.接收唤醒。该位用来决定是否把USART置于静默模式。当唤醒序列到来时,硬件会将其清零。0:接收器处于正常工作模式;1:接收器处于静默模式。注意
11、:1.在把USART置于静默模式(设置RWU位)之前,USART要已经先接收了一个数据字节。否则在静默模式卞,不能被空闲总线检测唤醒。2.当配置成地址标记检测唤醒(WAKE位=1),在RXNE位被置位时,不能用软件修改RWU位。(这里不用管,默认设置为0)0.发送断开帧。(这里不用管,默认设置为0)、串丨1状态寄存器USART1-SR参考中文手册540页串丨I的状态可以通过状态寄存器USART_SR读取。USART_SR的各位描述如下图所示25.6.1状态寄存器(USART_SR)地址偏移:0x00复位值:OxOOCO31302928272625242322212019181716保留1511
12、13121110986543210保留CTSLBDTXETCRXNEIDLEORENEFEPI:TCwOrcw0rrcwOrcwOrrrrr这里我们关注一下两个位,第5、6位RXNE和TC6.TC为发送完成标志位。当该位被置1时,表示USART_DR内的数据已经发送完了。如果设置了这个位的中断,则会产生中断。该位有两种清零方式:1)写USART_DR;2)直接向该位写0。5.RXNE为读数据寄存器。当该位被置1时,表示USART_DR已经有数据接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取USART_DR,通过读USART_DR可以将该位清零,也可以向该位写0直接清除。、串II数据
13、存储寄存器USART1-DR参考不完全手册125页STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是一个双寄存器,包含了TDR和RDRo当向该寄存器写数据的时候,串丨1就会自动发送,当收到数据的时候,也是存在该寄存器内。该寄存器的各位描述如下图所示25.6.2数据寄存器(USART_DR)地址偏移:0x04复位值:不确定rwrwrwrwrwnrrvrwrw位31:9保留位,硬件强制为0它是由两个寄存器组成的,一个给发送用仃DR),个给接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接II。RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期末课程汇报指南
- 作物育种技术
- 2025锅炉工劳动合同
- 2025建筑公司劳务人员合同
- 2025年版民间汽车抵押借款合同范本及关键注意事项
- 2025园林景观木材供货合同范本
- 2025年粮食订购合同范本
- 2025建筑工程公司劳动合同样本
- 2025年反担保股份质押合同范本
- 2025综合超市合作伙伴合同范本
- 职业病防护设施及管理
- 校园安全管理的问题及对策研究
- PA66ROHS无卤sgs报告环保报告
- 《送元二使安西》优秀课件
- 中国与俄罗斯渔业合作的潜力分析
- 2023年广东省高中学生化学竞赛试题与标准答案正式题(word可编辑版)
- 汽车轮胎教案
- 公司应急组织体系
- 局部解剖学:第八章 血 管
- 电子政务与电子商务的关系探讨
- 厨师菜品考核评分表201921
评论
0/150
提交评论