lx1990 发表于 2018-6-22 09:50:34

STM32UART中断收发异常

在使用CUBE上搭了个STM32L151 UART的程序,但是串口在中断发数据时,发出去的全是乱码,不使用中断就是好的,有没有大神知道这是个什么情况?中断没配置好?可是就一句话开中断呀

发表于 2018-6-22 10:07:39

楼主用的是用HAL_USART_Transmit_IT发的?

电子星辰 发表于 2018-6-22 10:25:45

不使用中断是指用的printf或者直接HAL_USART_Transmit吗?这个可能性很多,楼主能传下代码吗

wenyangzeng 发表于 2018-6-22 10:29:40

是否设定的中断发送数据长度与实际数据长度不相同所致?

zhdzhd-174422 发表于 2018-6-22 11:30:00

本帖最后由 zhdzhd-174422 于 2018-6-22 12:45 编辑

1:如果使用UART_Receive_IT来接收数据,可以把接收长度设置为1,然后在HAL_UART_RxCpltCallback里实现接收处理即可;
2:使用HAL_UART_Receive来接收,把size设置大一点,超时时间设置合适,即可;

首先用一个正确的程序试一下确保软件本身没有什么问题,然后再依次检查波特率和VPB时钟频率是否匹配,因为它们不匹配的时候同样会出现乱码。如果最后还是乱码的话,可能就是程序的问题了,需要检查程序是否有语法以外的错误。

lx1990 发表于 2018-6-22 11:48:12

安 发表于 2018-6-22 10:07
楼主用的是用HAL_USART_Transmit_IT发的?

是的

lx1990 发表于 2018-6-22 11:49:59

zhdzhd-174422 发表于 2018-6-22 11:30
1:如果使用UART_Receive_IT来接收数据,可以把接收长度设置为1,然后在HAL_UART_RxCpltCallback里实现接收 ...

主要是中断发送异常,发出去的通过串口助手显示都是乱码

lx1990 发表于 2018-6-22 11:50:57

wenyangzeng 发表于 2018-6-22 10:29
是否设定的中断发送数据长度与实际数据长度不相同所致?

一样的,发的24位,显示的也是24位,但是数据都不对,用同样的配置在开发板上就是正常的

zhdzhd-174422 发表于 2018-6-22 12:44:26

lx1990 发表于 2018-6-22 11:49
主要是中断发送异常,发出去的通过串口助手显示都是乱码

首先用一个正确的程序试一下确保软件本身没有什么问题,

然后再依次检查波特率和时钟频率是否匹配,因为它们不匹配的时候同样会出现乱码。

如果最后还是乱码的话,可能就是程序的问题了,需要检查程序是否有语法以外的错误。

发表于 2018-6-22 14:02:16

楼主最好还是贴出代码来,不然一切都是靠猜测。还有发送的时候用延时输入是多少?
页: [1]
查看完整版本: STM32UART中断收发异常