stm32串口的DMA接收

UART5不支持DMA

不同的外设需要使用不同的DMA


UART4需要使用DMA2的通道3或者5

例如:
void DMA1_Channel5_IRQHandler(void)
{
u16 i,j=0;
OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR  */
    OSIntNesting++;
    OS_EXIT_CRITICAL();
if(DMA_GetITStatus(DMA1_IT_TC5)!= RESET)
{
DMA_ClearITPendingBit(DMA1_IT_GL5); //清除全部中断标志
DMA_ClearITPendingBit(DMA1_IT_TC5);
DMA_ClearFlag(DMA1_FLAG_TC5);
/*每个距离测试数据包有3 个字节(依次标号为A,B,C),前面2 个字节高位为0,
最后一个字节高位为1,标示此数据包的结束*/
memcpy(Uart_Rx_Backup,Uart_Rx,UART_RX_LEN);
if((Uart_Rx_Backup[0]&0x80) != 0)//
j=1;
else if((Uart_Rx_Backup[1]&0x80) != 0)//
j=2;
else if((Uart_Rx_Backup[2]&0x80) != 0)//
j=0;

for(i=0;i<50;i++)
{
RecorderData_FileWrite[i]=DecodeLaseData3Byte(Uart_Rx_Backup+i*3+j);
}
}
else if(DMA_GetITStatus(DMA1_IT_HT5) == SET)
    {
        DMA_ClearITPendingBit(DMA1_IT_HT5);
        DMA_ClearITPendingBit(DMA1_IT_GL5);                                
    }
OSIntExit(); 
}


猜你喜欢

转载自blog.csdn.net/nicholas_dlut/article/details/80937119