微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 调试STM8/stm32串口时发现的问题

调试STM8/stm32串口时发现的问题

时间:11-27 来源:互联网 点击:
描述:串口中断1用来接收到的数据,我是用串口助手发送一个8字节的数据,然后我想查看8个字节是否被单片接收,比如数据是0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08这8个数值,串口中断

#pragma vector=ITC_IRQ_UART1_RX + 2

__interrupt void Uart1RxdInt(void)

{ //此函数内已完成清中断标志

u8 ret;

if(UART1_GetFlagStatus(UART1_FLAG_RXNE)!=RESET)

{

tmp = UART1_ReceiveData8();

ret=UART_KbdPkgRead(tmp);

if(ret==0)

{

KBD_Flag_RECE=1;

}

}

}

我在ret的地方设了个断点,然后每次发送进入中断的时候发现可以停止在那,并且此时接受的数据的确也是0x01,然后有全速运行,接受的数据也是0x02,在全速运行就可能又是0x01或者根本不会停下来,

此时我才知道我犯了一个错误,当发送一串数据时,断点不应该设在中断内,因为cpu在断点停留处,她是不会停下的,也就是那串数据会被错过,如果你发送一个数字,那就不会错过了。

接下来该怎么办呢?

进入中断的函数,比如我的是UART_KbdPkgRead()。进入后可以编写一个小程序,用来判断接受得到数据是否是要发送的,比如if(dat==0x01),if(dat==0x02).这样在他前边设置断点,用来判断这一串数据是否被单片机接收到了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top