Z
@乒乒乓乒兵乓乒
void uart1_isr(void)
{
uint8_t uart_id = __UART_INT_GET_ID(Uart1_handle.UARTx);
printf("%02x\r\n",uart_id);
if(uart_id == INT_INDEX_RX_TOUT )
{
uint32_t BACK_uart_rec_len = DMA->Channels[DMA_Chan0_Handle.Channel].CTL2.BLOCK_TS;
printf("len = %d\r\n",BACK_uart_rec_len);
uint32_t cur_des = DMA->Channels[0].DAR;
uint8_t *write_des = (uint8_t *)cur_des;
uint32_t finish_size = cur_des - (uint32_t)&RxBuf[0];
while (Uart1_handle.UARTx->LSR.LSR_BIT.DR)
{
*write_des++ = Uart1_handle.UARTx->DATA_DLL.DATA;
finish_size++;
}
printf("finish_size is %d \r\n",finish_size);
dma_start_IT(&DMA_Chan0_Handle, (uint32_t)RxBuf, (uint32_t)&Uart1_handle.UARTx->DATA_DLL.DATA, sizeof(RxBuf), DMA_BURST_LEN_16);
printf("Received %d bytes:\n", finish_size);
for (int i = 0; i < finish_size; i++)
{
printf("%x ", RxBuf[i]);
if ((i + 1) % 16 == 0)
printf("\n");
}
printf("\r\n");
}
}
你可以先看下这个代码