串口实验报告.doc_第1页
串口实验报告.doc_第2页
串口实验报告.doc_第3页
串口实验报告.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统开发课程实验报告班 级: 电 信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); /初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /USART1_RX (PA.10) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化PA10 4、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、串口中断初始化函数void USART1_IRQHandler(void) /串口1中断服务程序u8 Res;#ifdef OS_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)/接收到了0x0dif(Res!=0x0a)USART_RX_STA=0;/接收错误,重新开始else USART_RX_STA|=0x8000;/接收完成了 else /还没收到0X0Dif(Res=0x0d)USART_RX_STA|=0x4000;elseUSART_RX_BUFUSART_RX_STA&0X3FFF=Res ;USART_RX_STA+;if(USART_RX_STA(USART_REC_LEN-1)USART_RX_STA=0; #ifdef OS_TICKS_PER_SEC /如果时钟节拍数定义了,说明要使用ucosII了.OSIntExit(); #endif 7、在main函数编写int main(void) u8 t;u8 len;delay_init(); /延时函数初始化NVIC_Configuration();/ 设置中断优先级分组uart_init(9600); /串口初始化为9600LED_Init(); /初始化与LED连接的硬件接口 while(1) if(USART_RX_STA&0x8000) /接收完毕len=USART_RX_STA&0x3fff;/得到此次接收到的数据长度printf(rn您发送的消息为:rn);for(t=0;tlen;t+)USART_SendData(USART1,USART_RX_BUFt);/发送一个字节的数据while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET); /等待发送结束LED1=!LED1;delay_ms(200);LED1=!LED1;printf(rnrn);/插入换行USART_RX_STA=0;elseprintf(请输入数据,以空格键结束rn); delay_ms(15000); 四、 实验结果:通过本次试验,经过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论