STM32UART中断收发异常
在使用CUBE上搭了个STM32L151 UART的程序,但是串口在中断发数据时,发出去的全是乱码,不使用中断就是好的,有没有大神知道这是个什么情况?中断没配置好?可是就一句话开中断呀楼主用的是用HAL_USART_Transmit_IT发的? 不使用中断是指用的printf或者直接HAL_USART_Transmit吗?这个可能性很多,楼主能传下代码吗 是否设定的中断发送数据长度与实际数据长度不相同所致? 本帖最后由 zhdzhd-174422 于 2018-6-22 12:45 编辑
1:如果使用UART_Receive_IT来接收数据,可以把接收长度设置为1,然后在HAL_UART_RxCpltCallback里实现接收处理即可;
2:使用HAL_UART_Receive来接收,把size设置大一点,超时时间设置合适,即可;
首先用一个正确的程序试一下确保软件本身没有什么问题,然后再依次检查波特率和VPB时钟频率是否匹配,因为它们不匹配的时候同样会出现乱码。如果最后还是乱码的话,可能就是程序的问题了,需要检查程序是否有语法以外的错误。
安 发表于 2018-6-22 10:07
楼主用的是用HAL_USART_Transmit_IT发的?
是的 zhdzhd-174422 发表于 2018-6-22 11:30
1:如果使用UART_Receive_IT来接收数据,可以把接收长度设置为1,然后在HAL_UART_RxCpltCallback里实现接收 ...
主要是中断发送异常,发出去的通过串口助手显示都是乱码 wenyangzeng 发表于 2018-6-22 10:29
是否设定的中断发送数据长度与实际数据长度不相同所致?
一样的,发的24位,显示的也是24位,但是数据都不对,用同样的配置在开发板上就是正常的 lx1990 发表于 2018-6-22 11:49
主要是中断发送异常,发出去的通过串口助手显示都是乱码
首先用一个正确的程序试一下确保软件本身没有什么问题,
然后再依次检查波特率和时钟频率是否匹配,因为它们不匹配的时候同样会出现乱码。
如果最后还是乱码的话,可能就是程序的问题了,需要检查程序是否有语法以外的错误。 楼主最好还是贴出代码来,不然一切都是靠猜测。还有发送的时候用延时输入是多少?
页:
[1]