新手上路 
 
	- 积分
 - 28
 
        - 金钱
 - 28 
 
       - 注册时间
 - 2018-2-5
 
      - 在线时间
 - 18 小时
 
 
 
 | 
 
30金钱 
调试ucos3的时候出现了两个问题,望知道的网友帮我解答一下;软件开发环境为正点原子移植的ucos3,硬件没问题,第一个问题:ucos的delay_ms()函数延时不准,delay_ms()函数是使用正点原子的,裸机是没问题的,现在我要输出pwm方波,代码周期为20ms,实测周期为15ms,当我将周期改为25ms的时候实测周期为20ms,总是少5ms,我猜想这是不是与系统心跳的5ms有关系呢?小弟实在找不出问题出现在哪里。 
                        for(i=0;i<10;i++) 
                        { 
                                GPIO_SetBits(GPIOB,GPIO_Pin_15);    //输出1 
                                delay_ms(2); 
                                GPIO_ResetBits(GPIOB,GPIO_Pin_15);    //输出1 
                                delay_ms(23);//实际延时不准,实测周期为20ms 
 
 
                        } 
                        for(j=0;j<40;j++) 
                        { 
                                GPIO_SetBits(GPIOB,GPIO_Pin_15);    //输出1 
                                delay_ms(1); 
                                GPIO_ResetBits(GPIOB,GPIO_Pin_15);    //输出1 
                                delay_ms(24); 
                        } 
 
第二个问题:有关ds18b20,程序也是用正点原子的,裸机的时候一切正常,可是上系统的时候出现了问题,我500ms读一次温度,偶尔会出现这样的现象,第一次读25度,下一次读变为57,然后继续这样的循环,仿真查看过十六进制数,两者没有规律,不存在数据左移。我怀疑也是ucos的延时问题; 
                        OS_CRITICAL_ENTER();//进入临界区 
                temperature=DS18B20_Get_Temp(); 
                        OS_CRITICAL_EXIT();        //进入临界区 
                DS18B20_value=(u32)temperature; 
 
 
 |   
 
 
 
 
 
 |