同样的函数,放在while(1)循环外面时,函数中的语句不执行,而放在while(1)循环内就执行?

2019-08-23 14:01发布

主程序如下,当poweron_Init()放在while(1)里面时,函数语句正常执行,而把poweron_Init()放在while(1)里面时,函数的语句就不执行了,请问各位大神这是什么原因?int main()
{                  
        usart3_init();//′®¿ú33õê¼»ˉ
        usart1_init();
        
        while(1)
        {        
                poweron_Init();
         
        }        


调用的函数为:
void poweron_Init(void)                                                  


{
    u8 counter=0;
    Delay(10000);
    /*response RDY*/
    if(rx_counter==7)
    {
             //rx_counter=0;
       for(counter=0; counter<7; counter++)
       {
          if(receive_command[counter] != hardware_init_value1[counter])
          {
             break;
          }
       }

       if(counter>=7)
       {
          hwinitial_ok_f=1;
                            //rx_counter=0;
       }     
       else
       {
          hwinitial_ok_f=0;
                            //rx_counter=0;
       }
    }
}


void Delay(u32 nCount)
{
for(; nCount != 0 ; nCount--);
}
//·¢&#203;íò&#187;&#184;&#246;×&#214;·&#251;′&#174;
/*******************************************************************************
* Name  : Uart3_PutString
* Deion : print a string to the uart3
* Input : buf&#206;a·¢&#203;íêy&#190;Yμ&#196;μ&#216;&#214;· , len&#206;a·¢&#203;í×&#214;·&#251;μ&#196;&#184;&#246;êy
*******************************************************************************/
void Uart3_PutString(u8 *buf , u8 len)
{   u8 i;
    for(i=0;i<len;i++)
    {
        Uart3_PutChar(*buf++);
    }
}


//·¢&#203;íò&#187;&#184;&#246;×&#214;·&#251;
/*******************************************************************************
* Name  : Uart3_PutChar
* Deion : printf a char to the uart.
*******************************************************************************/
u8 Uart3_PutChar(u8 ch)
{
    /* Write a character to the USART */
    USART_SendData(USART3, (u8) ch);
    while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET)
   {

   }
   return ch;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
月无缺
1楼-- · 2019-08-23 18:03
是不是程序走完了,外部初始化信号还没有过来。
FantaSy_
2楼-- · 2019-08-23 19:38
你这函数有什么作用的??
wentaojs
3楼-- · 2019-08-24 00:27
 精彩回答 2  元偷偷看……
wentaojs
4楼-- · 2019-08-24 05:19
因为只需要接收一次初始化信号,应该是放在while(1)循环的外面;可以放在外面函数内部的语句就不执行,只有放在while(1)循环里面函数的语句才被执行
wentaojs
5楼-- · 2019-08-24 06:30
应该在程序走完之前收到初始化信号的,因为我调试的时候观察了接收数组的数值和数组长度,程序执行完是有变化的
wentaojs
6楼-- · 2019-08-24 10:29
月无缺,你说得很有道理,函数放在while(1)里面是反复执行的,这次走完没有收到初始化信号,下次继续执行,总有一次会收到初始化信号;而放在while(1)外面就很可能能出现程序走完,而初始化信号还没收到的情况;看来我要增加个延时程序才行了,多谢啊!

一周热门 更多>