2024年串口实验报告_第1页
2024年串口实验报告_第2页
2024年串口实验报告_第3页
2024年串口实验报告_第4页
全文预览已结束

下载本文档

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

文档简介

《嵌入式系统開发》課程试验汇报班级:電信141姓名:冯录鹏學号:试验曰期:5月6曰電子通信工程系试验一串口通信试验課時安排:2課時试验目的:1、熟悉STM32的编程环境的使用;2、掌握STM32的串口的编程;试验环节:在keil环境下编辑源文献,并编译。在野火STM32试验板上运行,调试程序,观测试验現象,理解并掌握有关知识。编写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();#endif if(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); //串口初始化為9600 LED_Init(); //初始化与LED连接的硬件接口 while(1){ if(USART_RX_STA&0x8000){ //接受完毕 len=USART_RX_STA&0x3fff; //得到本次接受到的数据長度 printf("\r\n您发送的消息為:\r\n"); for(t=0;t<len;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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论