|
|
如题,我现在遇到个难题,被折腾了好几天。
用STM32CubeMX创建的IAR工程,USART1使用PA9,PA10,使用DMA收发数据,始终发不出来,如果不用DMA是能正常发送的。
相同的代码用在keil上却能正常发出来。后来干脆把STM32CubeMX创建的工程另存为KEIL的,什么都没改,收发都是正常的。
uint8_t tx[] = "Hello\r\n";
HAL_UART_Transmit(&huart1, tx, sizeof(tx), 100); //IAR,KEIL都能发送出来
if(HAL_UART_Transmit_DMA(&huart1, tx, sizeof(tx)) != HAL_OK) //IAR发不出来,KEIL能正常发送出来。
{
Error_Handler();
}
这个问题折腾了我很久,仿真查了寄存器,执行HAL_UART_Transmit_DMA之前,相关寄存器的设置都是一样的,
一旦执行这个函数,中断标志就会置位(TEIF1和FEIF1是1),数据发不出来。能发出来的keil执行这个函数置位的是TCIF1和HTIF1。
现在很迷茫,实在搞不定,特来求教,帮我看看到底是什么问题。IAR的版本是9.70.1,STM32CubeMX的版本是6.16.0。
DMA使用的是DMA1的DMA1_Stream0接收,DMA1_Stream1发送。
|
|