|
在测试串口发送函数HAL_UART_Transmit_DMA(UART_HandleTypeDef huart, uint8_t pData, uint16_t Size) 时,发现不能对pData赋值后发送,求原因!
|
HAL_UART_Transmit_DMA和printf发送有冲突吧
HAL_UART_Transmit_DMA和printf发送有冲突吧
1.去掉printf,也不输出! 2.printf用的是轮询语句,占用的是cpu资源,而dma数据传输时,没有用到cpu资源。两者在资源抢夺上没有冲突。
结合你的描述,你现在即使不开启基于DMA的uart发送,你的printf依然没有输出。不知你调用的AL_UART_Transmit_DMA()和Printf()是否使用同一个UART。不妨先调试好一个功能,比方先调试好UART的DMA发送。 基于CubeMx进行配置的话,基本配置【管脚、uart、DMA】不会有啥问题。有个地方注意下,DMA初始化文件放在UART初始文件之前, MX_DMA_Init(); MX_USART1_UART_Init();再就是检测下你的硬件连接。
结合你的描述,你现在即使不开启基于DMA的uart发送,你的printf依然没有输出。不知你调用的AL_UART_Transmi ...
楼主请先确认一下收到数据个数是不是在增加,如果是增加,修改一下代码,把(uin8_t )&ch中的(uin8_t )去掉,直接&ch就行了。
试过,还是不行
楼主,是否可以仿真,仿真模式下试一下能不能进入这个函数。
编译器优化问题?