《串口实验报告》由会员分享,可在线阅读,更多相关《串口实验报告(4页珍藏版)》请在金锄头文库上搜索。
1、海南大学学生实验报告课程名称:嵌入式实验 班级:2013级物联网1班 姓名 程谣 日期:2015.12.10 学号:20132835320008 成绩 教师一、实验题目:串口通信实验二、实验目的1、熟悉STM32的编程环境的使用;2、掌握STM32的串口的编程;三、实验内容编写STM32 的串行通信程序,实现由串口调试助手输入任意字符串,STM接收后返回到串口调试助手输出。四、实验步骤1、建立工程,编写主要代码2、时钟配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);3、GPIOA配置GPI
2、O_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, /初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /USART1_RX (PA.10)GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
3、/浮空输入GPIO_Init(GPIOA, /初始化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_InitStruc
4、ture.USART_HardwareFlowControl = USART_HardwareFlowControl_None;/无硬件数据流控制海南大学学生实验报告课程名称:嵌入式实验 班级:2013级物联网1班 姓名 程谣 日期:2015.12.10 学号:20132835320008 成绩 教师USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/收发模式USART_Init(USART1, /初始化串口USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/开启中断USART
5、_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/接收错误,重新开始else USART_RX
6、_STA|=0x8000; /接收完成了 else /还没收到0X0Dif(Res=0x0d)USART_RX_STA|=0x4000;elseUSART_RX_BUFUSART_RX_STAUSART_RX_STA+;if(USART_RX_STA(USART_REC_LEN-1)USART_RX_STA=0; 海南大学学生实验报告课程名称:嵌入式实验 班级:2013级物联网1班 姓名 程谣 日期:2015.12.10 学号:20132835320008 成绩 教师#ifdef OS_TICKS_PER_SEC /如果时钟节拍数定义了,说明要使用ucosII了.OSIntExit(); #e
7、ndif 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/得到此次接收到的数据长度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“); 海南大学学生实验报告课程名称:嵌入式实验 班级:2013级物联网1班 姓名 程谣 日期:2015.12.10 学号:20132835320008 成绩 教师delay_ms(15000); 五、实验结果