串口实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《嵌入式系统开发》课程实验报告班级:电信141姓名:冯录鹏学号:140407112实验日期:5月6日电子通信工程系实验一串口通信实验学时安排:2学时一、实验目的:1、熟悉STM32的编程环境的使用;2、掌握STM32的串口的编程;二、实验步骤:1.在keil环境下编辑源文件,并编译。2.在野火STM32实验板上运行,调试程序,观察实验现象,理解并掌握相关知识。3.编写STM32的串行通信程序,实现由串口调试助手输入任意字符串,STM接收后返回到串口调试助手输出。三、实验内容:设计思路及程序代码。1、建立工程,编写主要代码2、时钟配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);3、GPIOA配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//USART1_TX(PA.9)GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA9GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//USART1_RX(PA.10)GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA104、USART初始化设置USART_InitStructure.USART_BaudRate=bound;//一般设置为9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits=USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity=USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//收发模式USART_Init(USART1,&USART_InitStructure);//初始化串口USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启中断USART_Cmd(USART1,ENABLE);//使能串口5、串口中断初始化函数voidUSART1_IRQHandler(void)//串口1中断服务程序{u8Res;#ifdefOS_TICKS_PER_SEC//如果时钟节拍数定义了,说明要使用ucosII了.OSIntEnter();#endifif(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){Res=USART_ReceiveData(USART1);//(USART1-DR);//读取接收到的数据if((USART_RX_STA&0x8000)==0)//接收未完成{if(USART_RX_STA&0x4000)//接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始elseUSART_RX_STA|=0x8000;//接收完成了}else//还没收到0X0D{if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;USART_RX_STA++;if(USART_RX_STA(USART_REC_LEN-1))USART_RX_STA=0;}}}#ifdefOS_TICKS_PER_SEC//如果时钟节拍数定义了,说明要使用ucosII了.OSIntExit();#endif}7、在main函数编写intmain(void){u8t;u8len;delay_init();//延时函数初始化NVIC_Configuration();//设置中断优先级分组uart_init(9600);//串口初始化为9600LED_Init();//初始化与LED连接的硬件接口while(1){if(USART_RX_STA&0x8000){//接收完毕len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度printf(\r\n您发送的消息为:\r\n);for(t=0;tlen;t++){USART_SendData(USART1,USART_RX_BUF[t]);//发送一个字节的数据while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);}//等待发送结束LED1=!LED1;delay_ms(200);LED1=!LED1;printf(\r\n\r\n);//插入换行USART_RX_STA=0;}else{printf(请输入数据,以空格键结束\r\n);delay_ms(15000);}}}四、实验结果:通过本次试验,经过一次次失败后,终于完成了串口实验;最重要的不是作出实验结果,而是你在实验结果中学会到了什么,排出困难,通过解决困难,才能学到真正的知识。学到的不仅仅是知识,还有团结和互助最重要的,学会了做实验要仔细,这样就可以避免一些不必要的麻烦,也养成了良好的习惯。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功