STM32
直播中

贾埃罗

7年用户 1682经验值
私信 关注
[经验]

stm8s105给CPU发送请求后,如果主CPU不给答复,程序就会一直在(1)处进入死循环,怎么解决?

我参考别人的UART2的发送和接收程序入下(与主CPU通信)。现在面临的问题是,在我给CPU发送请求后,如果主CPU不给答复,那么我的程序就会一直在(1)处进入死循环,我该怎么修改跳出循环而不影响string5的赋值。

u8 UART2_ReceiveByte(void)
{
  while (!(UART2_SR   UART2_FLAG_RXNE));//  (1)
  USART2_RX_BUF=(uint8_t)UART2_DR;
  return USART2_RX_BUF;
}

void UART2_SendByte(u8 data)
{
        UART2_DR=data;        
        while (!(UART2_SR   UART2_FLAG_TXE));
}
main()
{
uchar lcd_addy=0;
uchar j=10;
while (lcd_addy<22)        //等待主CPU启动完成并返回当前属性值,CPU答复22个字符
        {
               
                while(j)            //向主机发送10次请求命令
                        {
                                UART2_SendByte(0xff);  //单片机向主CPU发送获取当前显示命令请求
                                UART2_SendByte(0x04);
                                UART2_SendByte(0x00);
                                j--;
                        }
                UART2_ReceiveByte();
                string5[lcd_addy]=USART2_RX_BUF;
                lcd_addy++;
               
        }

回帖(1)

陈静

2024-5-14 16:30:11
最完美的解决是用串口接收中断,这样不管你接收多少数据,实时性能保证。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分