新手上路
- 积分
- 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;
|
|