我用dht11传感器在stm32f7上进行温湿度采集,在ucosII下,新建一个task,定时200ms获取一次,可以读取数据,但是我一切换到网络部分的时候,就加了一个task调用,屏幕显示摄像头采集的图像,然后温湿度数据就不刷新了,调试去看读取的数据都是错误的都是ff,dht11用的是历程移植过来的,查了一些资料说是采集的时候关闭任务调度,我也试着关闭了,可是还不好使,有没有大神有好的办法,帮忙解惑,感激不尽[mw_shl_code=c,true]void led_task(void *pdata)
{
OS_CPU_SR cpu_sr;
u8 temperature;
u8 humidity;
while(1)
{
LED0_Toggle;
OSTimeDlyHMSM(0,0,0,100); //Ñóê±500ms
// OS_ENTER_CRITICAL(); //1ØÖD¶Ï
OSTimeDlyHMSM(0,0,0,2);
DHT11_Read_Data(&temperature,&humidity); //¶áè¡ÎÂêa¶èÖμ
OSTimeDlyHMSM(0,0,0,2);
// OS_EXIT_CRITICAL(); //¿aÖD¶Ï
LCD_ShowString(30,270,200,16,16,"Temp: C");
LCD_ShowString(30,290,200,16,16,"Humi: %");
LCD_ShowNum(30+40,270,temperature,2,16); //ÏÔê¾Î¶è
LCD_ShowNum(30+40,290,humidity,2,16); //ÏÔê¾êa¶è
}
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
时间挺久了,确实是操作系统影响时序的问题,你把dht11刷新的函数放在一个任务很空闲的任务里,好像还有一个地方,是dht11发送寄存器指令函数中有个延时要延时20ms
我的读取数据任务没有加其他的功能,就只是读取数据好显示,延时20ms我加了,好像还是不行,谢谢你啊
一周热门 更多>