STM32f103
寄存器构成串行通信
主程序接收数据,上位机串口发送的数据由回车键终止,单片机连接后发回所有数据。
#include'stm32f10x_lib.h '
#include'sys.h '
//#include'ioshezhi_jb.h '
unsignedcharres;
//
串行端口接受数据的临时保存
unsignedcharenddd=0;
//
接受完成标志
无符号整数=0;
//
数据长度
unsignedcharshubiao[200];
//
数据存储表
,
限制长度为
200
打工族
unsignedintt;
//
通信数据操作
for
循环控制
unsignedlongi=0;
intmain () )
{
Stm32_Clock_Init (;
//
系统时钟设置
//
io_init (;
//io
设置时钟和输入/输出选项
RCC-APB2ENR|=0x4000;
//
打开
USART1
钟表;
有
1
RCC-APB2ENR|=0x0004;
//
打开
GPIOA
口表;
有
2
GPIOA-CRH=0xfffff00f;
//PA9
在、
PA10IO
归零设定
GPIOA-CRH|=0x000008b0;
//P9
推挽输出、
最大50m Hz
;
P10
上拉输入
RCC-APB2RSTR|=0x4000;
//
串行复位
有
3
RCC-APB2RSTR=0xbfff;
//
停止串行端口复位
有
4
//
USART1-BRR=0x1d4c;
//
主频率
72米
对于,波特率为
9600
有
5
USART1-BRR=0x0ea6;
//
主频率
36M
对于,波特率为
9600
//
USART1-BRR=0x0139;
//
主频率
36M
对于,波特率为
115200
//
USART1-CR1|=0x200c;
//
串行端口,发送信长
8
字节,未选中,打开发送,打开接收;
USART1-CR1|=0x340c;
//
串行端口,发送信长
9
字节、偶校验、发送开、接收开;
//(
是有效的数据吗
8
位长
)
有
6
while(1)。
{
//
shuru_init (;
//
计算入口端的值
if(0x0020==(usarT1-Sr )0x0020 ) )
//
收到1字节的数据后
有
7
{res=USART1-DR;
//
读取串行寄存器的数据,有临时的位置
res
有
8
if(RES!=0x0a ) {shubiao[len]=res; len; }
//
数据不是回车的最后的情况
//
打工族
0x0a,
存入数表