Featured image of post HAL_DMA中断空闲接受不定长数据2

HAL_DMA中断空闲接受不定长数据2

HAL_DMA中断空闲接受不定长数据2

空闲中断 + dma 上次那篇文章确实没有好好使用好HAL库 现在 重新再来写一个 这个是DMA 收发 只需要在cubmax里面打开DMA设置 和 中断 就行 在这里插入图片描述

在这里插入图片描述

然后就是代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
extern UART_HandleTypeDef huart1;
void test_task_fun(void *arg){


    const char t_data[]={"-----------\n"};
    char tbuf[128];
    char rbuf[128];

    memset(tbuf,0,sizeof(tbuf));
    memset(rbuf,0,sizeof(rbuf));

    __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
    HAL_UART_Transmit_DMA(&huart1, (uint8_t*)t_data, strlen(t_data));
	
  /* Infinite loop */
    for(;;)
    {
		if(HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t*)rbuf, sizeof(rbuf)-1)==HAL_OK)	
		{
			memcpy(tbuf,rbuf,sizeof(rbuf));
			HAL_UART_Transmit_DMA(&huart1, (uint8_t*)tbuf, strlen(tbuf));
		}	
    osDelay(1);
    }


}
最后更新于 Mar 21, 2025 09:45 +0800
世界是你们
使用 Hugo 构建
主题 StackJimmy 设计