while里加delay函数,程序不能正常执行

2019-08-17 08:44发布

while 里加 delay 函数,程序不能正常执行
把delay 函数注释掉,就可以正常执行了,求解,谢谢


int main(void)
{         

        LED_Init();                                         
        delay_init();                            
  ID_Init();  
        RS485_USART1_Init( );       
       
                                                                          
        while(1)
        {                  
    //ER_LED= ~ER_LED;
        //        delay_ms(1000);         
               
    RS4851_RX_TX();
               
         
  }
       
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
2672751679
2019-08-18 02:22
正点原子 发表于 2017-6-8 23:40
说明你的delay可能没配置好,仿真进去看看就知道了

我软件仿真试了下,一直在执行do while语句,也就是说while的条件一直不满足

void delay_ms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;                                //时间加载(SysTick->LOAD为24bit)
        SysTick->VAL =0x00;                                                        //清空计数器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;        //开始倒数  
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));                //等待时间到达   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;        //关闭计数器
        SysTick->VAL =0X00;                                               //清空计数器                      
}

一周热门 更多>