STM32F103串口通信寄存器设置.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32f103寄存器配置串口通信 主程序接收数据,上位机串口发送的数据已回车键结束,单片机接之后将所有数据发回。 #include "stm32f10x_lib.h" #include "sys.h" unsigned char res; unsigned char enddd=0; unsigned int len=0; unsigned char shubiao[200]; unsigned int t;//#include "ioshezhi_jb.h" unsigned char res; unsigned char enddd=0; unsigned int len=0; unsigned char shubiao[200]; unsigned int t; // 串口接受数据临时存储 // 接受完成标志 // 数据长度 // 数据存储表 ,限制长度为 200 字节 // 通信数据操作 for 循环控制 unsigned long i=0; int main() { // 系统时钟设置//io 时钟以及输入输出选项设置 // 系统时钟设置 //io 时钟以及输入输出选项设置 RCC->APB2ENR|=0x4000;RCC->APB2ENR|=0x0004; RCC->APB2ENR|=0x4000; RCC->APB2ENR|=0x0004; //开启USART1时钟;① //开启GPIOA 口时钟;③ GPIOA->CRH&=0xfffff00f;GPIOA->CRH|=0x000008b0;//PA9、PA10IO GPIOA->CRH&=0xfffff00f; GPIOA->CRH|=0x000008b0; //P9 推挽输出, max50MHZ ; P10 上拉输入 //串口复位 //串口复位 CD //串口停止复位 ④ // USART1->BRR=0x1d4c;USART1->BRR=0x0ea6; // USART1->BRR=0x1d4c; USART1->BRR=0x0ea6; // USART1->BRR=0x0139; // USART1->CR1|=0x200c; USART1->CR1|=0x340c; TOC \o "1-5" \h \z // 主频 72M 时,波特率为 9600 D5 // 主频 36M 时,波特率为 9600 // 主频 36M 时,波特率为 115200 //串口开,发送长度 8字节,无校验,发送开,接收开; //串口开,发送长度 9字节,偶校验,发送开,接收开; //( 有效数据还是 8 位长度 ) D6 while (1) { // shuru_init(); // 计算输入口的值 if(0x0020==((USART1->SR)&0x0020)) //如果接受到了一个字节的数据 D7 { res=USART1->DR; //读取串口寄存器数据并存在临时位置 resD8 if(res!=0x0a){shubiao[len]=res;len++;} // 如果该数据不是回车符的最后一个 //字节0x0a,则存入数表 else{if(shubiao[le n-1]==0x0d){e nddd=1;le n--;};}; }; //如果是0x0a,则判断前一个字符是不是 OxOd,(回车符ASCII码为OxOaOd) //是的话则标记接受完成标志 eddd并删掉已接受到的前一个字节的数据 ////if(en ddd==1){for(t=0;t<le n;t++){ USART1->DR=shubiao[t]; while((USART1->SR&0 X40)==0);}; // // if(en ddd==1) {for(t=0;t<le n;t++) { USART1->DR=shubiao[t]; while((USART1->SR&0 X40)==0); }; en ddd=0; for(t=0;t<=le n;t++){shubiao[t]=0;}; len=0; }; i++; if(i==20000){PC151;}; if(i==40000){PC150;i=0;}; II如果接受完成了 //依次发送数表中的数据 II ③ II等待当前字节数据发送结束 迪 //将数表中数据清零 //程序运行状态指示灯 }; } 寄存器注释: ①、⑵ 时钟使能寄存器 RCC->APB2ENR参考不完全手册 P108页面 需要开启的PORTA和USART1的时钟使能位,分别在 bit2和bit14,只要将这两位置 1就 可以使能 PORTA和USART1的时钟了。寄存器各位功能定义如下: 31 30 29 28 27 26 25 24 23 22 21 20

文档评论(0)

niupai11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档