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();
}