久芯网

HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

avatar LaoSun518 提问时间: 2023-08-18 18:12:16 / 未解决

在测试串口发送函数HAL_UART_Transmit_DMA(UART_HandleTypeDef huart, uint8_t pData, uint16_t Size) 时,发现不能对pData赋值后发送,求原因!

HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) [相关图片]

HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) [相关图片]

HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) [相关图片]

HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) [相关图片]

8个回答
  • avatar STMWoodData
    回答时间: 2023-08-18 18:30:12

    HAL_UART_Transmit_DMA和printf发送有冲突吧

  • avatar LaoSun518
    回答时间: 2023-08-18 18:47:24
    STMWoodData 发表于 2021-11-12 09:20
    HAL_UART_Transmit_DMA和printf发送有冲突吧

    1.去掉printf,也不输出! 2.printf用的是轮询语句,占用的是cpu资源,而dma数据传输时,没有用到cpu资源。两者在资源抢夺上没有冲突。

  • avatar xmshao
    回答时间: 2023-08-18 19:15:25

    结合你的描述,你现在即使不开启基于DMA的uart发送,你的printf依然没有输出。不知你调用的AL_UART_Transmit_DMA()和Printf()是否使用同一个UART。不妨先调试好一个功能,比方先调试好UART的DMA发送。 基于CubeMx进行配置的话,基本配置【管脚、uart、DMA】不会有啥问题。有个地方注意下,DMA初始化文件放在UART初始文件之前, MX_DMA_Init(); MX_USART1_UART_Init();再就是检测下你的硬件连接。

  • avatar LaoSun518
    回答时间: 2023-08-18 19:42:42
    xmshao 发表于 2021-11-12 10:48
    结合你的描述,你现在即使不开启基于DMA的uart发送,你的printf依然没有输出。不知你调用的AL_UART_Transmi ...

  • avatar 废鱼
    回答时间: 2023-08-18 19:59:33

    楼主请先确认一下收到数据个数是不是在增加,如果是增加,修改一下代码,把(uin8_t )&ch中的(uin8_t )去掉,直接&ch就行了。

  • avatar LaoSun518
    回答时间: 2023-08-18 20:29:02

    试过,还是不行

  • avatar 废鱼
    回答时间: 2023-08-18 20:45:42

    楼主,是否可以仿真,仿真模式下试一下能不能进入这个函数。

  • avatar jackghl
    回答时间: 2023-08-18 21:03:38

    编译器优化问题?

会员中心 微信客服
客服
回到顶部