收藏 分销(赏)

Arm实验串口收发数据.doc

上传人:s4****5z 文档编号:8655101 上传时间:2025-02-24 格式:DOC 页数:4 大小:27KB 下载积分:10 金币
下载 相关 举报
Arm实验串口收发数据.doc_第1页
第1页 / 共4页
Arm实验串口收发数据.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
串口收发数据 姓名 唐珊珊 班级2011物联网 学号2011412614 实验目的:掌握串口的使用,设置方法及收发数据的方法。 实验原理:调用固件库对USART2进行设置,实现通过超级串口输入回显功能。 实验步骤:要实现本实验功能设计,需要进行必要的设置,其步骤如下: 1、 使能并设置相关GPIO. 2、 配置USART2波特率为115200,8位数据位,1位停止位,无校验无硬件流控制。 3、 启动USART2并将收到的数据通过USART2发送,进行回显。 注意:USART2使用的是重映射后的管脚,所以AFIO的时钟,也需要使能。 程序如下: #include "stm32f10x.h" #include "stdio.h" void GPIO_Config(void); void COM_Init(void); int main(void) { uint8_t ch;//定义一个8位缓存变量ch GPIO_Config();//设置GPIO COM_Init();//初始化串口 while(1) { if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=RESET)//如果USART2的接受标志位不为0,即已经接受到数据 { ch=USART_ReceiveData(USART2);//将USART2接收到的数据放入变量ch缓存 USART_SendData(USART2,ch);//通过USART2发送ch的内容 } } } void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能 GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);//使能usaRt2管脚重映设 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; GPIO_Init(GPIOD, &GPIO_InitStructure); } void COM_Init(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate=115200; USART_InitStructure.USART_WordLength=USART_WordLength_8b; USART_InitStructure.USART_StopBits=USART_StopBits_1; USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_Init(USART2, &USART_InitStructure); USART_Cmd(USART2, ENABLE); } 密码回显的程序为: #include "stm32f10x.h" #include "stdio.h" void GPIO_Config(void); void COM_Init(void); int fputc(int ch,FILE *f); int main(void) { uint8_t ch[25];//定义一个8位缓存变量ch uint8_t i=0; GPIO_Config();//设置GPIO COM_Init();//初始化串口 printf("\n请你输入密码:"); while(1) { if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!=RESET)//如果USART2的接受标志位不为0,即已经接受到数据 { ch[i]=USART_ReceiveData(USART2);//将USART2接收到的数据放入变量ch缓存 if(ch[i]!=0x0d) { printf("*"); i=i+1; } else{ ch[i]='\0'; printf("\n你输入的密码:%s",ch); //i=0; //printf("\n请你输入密码:"); } } } } void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能 GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);//使能usaRt2管脚重映设 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//使能USART2时钟 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //设置重映射后的USART2输出TX管脚PD5为复用推挽 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); //设置重映射后的USART2输入rx管脚为浮空输入 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; GPIO_Init(GPIOD, &GPIO_InitStructure); } void COM_Init(void) { USART_InitTypeDef USART_InitStructure;//声明结构体初始化 USART_InitStructure.USART_BaudRate=115200; //设置波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b;//设置数据位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //设置停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //设置无校验 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //设置模式为收发 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//设置不开启硬件流 USART_Init(USART2, &USART_InitStructure);//初始化 USART_Cmd(USART2, ENABLE);//使能 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服