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作电平跳转,然后处理返回一包.
示波器显示:
放大显示:
STM32串口DMA方式接收数 相关文章:
- STM32串口DMA方式接收数据(11-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)