微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32的串口采用DMA方式接收数据测试

STM32的串口采用DMA方式接收数据测试

时间:11-19 来源:互联网 点击:
DMA方式发送USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);//采用DMA方式接收USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);//启动串口 USART_Cmd(USART1, ENABLE);
//串口1接收中断   void USART1_IRQHandler(void)                               {   uint32_t temp = 0;uint16_t i = 0;if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET){//USART_ClearFlag(USART1,USART_IT_IDLE);temp = USART1->SR;temp = USART1->DR; //清USART_IT_IDLE标志DMA_Cmd(DMA1_Channel5,DISABLE);temp = UART_RX_LEN - DMA_GetCurrDataCounter(DMA1_Channel5);for (i = 0;i < temp;i++){Data_Receive_Usart = Uart_Rx[i];//启动串口状态机usart_state_run(); }//设置传输数据长度DMA_SetCurrDataCounter(DMA1_Channel5,UART_RX_LEN);//打开DMADMA_Cmd(DMA1_Channel5,ENABLE);} __nop(); } 

测试结果:

条件:单片机运行于72M,与PC通信速率为460800.PC每隔100ms发送一个9个字节的包:c5 5c 6 0 6F 10 5 4e f7.

测试:单片机每次收到此包,一个IO作电平跳转,然后处理返回一包.

示波器显示:


放大显示:


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top