alisa123 发表于 2016-5-22 22:53:05

关于stm32f0的Usart的接受发送调试

调试stm32f0的Usart时出现问题,按照我的理解,如果通过PC和stm32f030的开发板串口通信时,在初始化中开启接收中断,程序全速运行,当接受到PC上的串口调试工具发下来的数据后进入接收中断的,可是不知为什么,我在PC的串口调试软件中还没有发数据,就进入接收中断了?这是为什么?求高手指点,谢谢!

jtc_88 发表于 2016-5-23 08:53:39

在 所有中断的设置过程中,记好,最好 先清除中断标志位再使能中断,我记不清是否是串口了,反正中断类似情况我被虐过好几次,现在乖乖的 所有的中断使能前 清除中断标志位!!:lol

mrclp 发表于 2016-5-23 09:11:14

本帖最后由 mrclp 于 2016-5-23 09:15 编辑

Like this...
USART_ClearITPendingBit(USART1, USART_IT_TC);
USART_ITConfig(USART1, USART_IT_TC, ENABLE);
USART_Cmd(USART1, ENABLE);

huaiqiao 发表于 2016-5-23 09:13:52

首先你要明确下,你的初始化的程序中是否有使能串口中断,如果是能进串口中断函数的话,应该是使能了串口中断。在使能串口中断的时候,需要清一下中断标志。

leolzf0000 发表于 2016-5-23 09:26:04

我也遇到过类似的问题,好好研究一下手册

Dylan疾风闪电 发表于 2016-5-23 10:21:28

首先,在串口中断中设置断点。
查看中断接收到的是什么数据?
如果是0x00,那么除了STM32编程问题外,还要考虑转换器、串口助手等因素。遇到0x00,可以先从网上下载个其它的串口助手试试。

馕边子 发表于 2016-5-23 11:05:20

先清除中断标志位再使能中断,等待接收,查询内容

yuazhang 发表于 2016-5-23 12:43:53

应该是设置问题吧。把所有的设置检查一遍吧。

power568 发表于 2016-5-23 13:54:12

如果设备处于接收状态的话,上电后是有可能进入接收中断一两次的,但是如果一直进的话就可能是硬件处理不对或者软件对应的中断没有正确清除...

lzts 发表于 2016-5-23 23:13:41

在中断程序要检测接收完成标志(中间是_FLAG_R??这个), 检测到取数据清中断标志就OK了. 只检测接收寄存器(中间是_IT_R??这个)非空是会总进中断的. 因数接收还未完成,接收寄存器总是非空的, 这样会总进中断的(假死)
页: [1] 2
查看完整版本: 关于stm32f0的Usart的接受发送调试