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条回答
正点原子
1楼-- · 2019-08-17 09:16
说明你的delay可能没配置好,仿真进去看看就知道了
jinggx
2楼-- · 2019-08-17 11:07
你那个4851是轮询模式吧?你delay把cpu耗在那里了,还怎么查询啊!
漂泊的雨林
3楼-- · 2019-08-17 13:50
 精彩回答 2  元偷偷看……
操作系统
4楼-- · 2019-08-17 15:32
看门狗动作了吧
来俩不甜的
5楼-- · 2019-08-17 19:07
延时改短点
2672751679
6楼-- · 2019-08-18 00:11
正点原子 发表于 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;                                               //清空计数器                      
}

一周热门 更多>