海迹天涯 发表于 2017-1-4 11:22
你可以追踪下代码看看有没有被执行到
都执行了,可能是回调函数有问题
海迹天涯 发表于 2017-1-4 11:22
你可以追踪下代码看看有没有被执行到
嗯 都执行了 我在想是不是回调函数的问题
也许进入了串口接收错误处理回调函数。
本帖最后由 wenyangzeng 于 2017-1-4 13:20 编辑
这个HAL USART 需要在主循环函数中不断调用HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE),才能响应中断。这与查询方式有何区别?
令人费解!!
支持一下
wenyangzeng 发表于 2017-1-4 13:19
这个HAL USART 需要在主循环函数中不断调用HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer, RXBUF ...
只要再main中调用一次,然后在回调函数中调用
就好了
可以设置的,断点设置不了,可能是你配置不对,导致回调函数没有被调用
追踪一下
找到问题了 void USART3_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart3);
}
如果在cube中设置了nvic的话这个函数会在-it.c里面自动写好
如果cube中没有设置nvic的话 这个函数要自己写 才能开启中断
使用CubeMX配置一下调用HAL_UART_Receive_IT(),接收完成之后就会调用回调函数;
如果不定长数据接收建议使用空闲中断或超时中断;