2
新手上路
使用道具 举报
1万
7万
11万
管理员
eric2013:DS18B20读取的时候要做开关中断,时序比较严格,一旦被打断就死翘翘了。可以参看下我们的实现。 (2016-10-14 10:27) 
7
114
135
初级会员
huarana:我一开始用的以前用过的例子修改过来,发现不行。 然后使用你们的18b20例程里的,发现 也不行、 ....... (2016-10-14 12:51) 
/* TempTask function */void TempTask(void const * argument){ /* USER CODE BEGIN TempTask */ /* Infinite loop */ u8 ds18b20_temp[3]={0}; volatile short temperature=0; for(;;) { osDelay(5000);// temperature = DS18B20_Get_Temp(); DISABLE_INT(); temperature = DS18B20_ReadTempReg(); ENABLE_INT(); ds18b20_temp[0]=(temperature/100)+'0'; ds18b20_temp[1]=(temperature%100/10)+'0'; ds18b20_temp[2]=(temperature%10)+'0'; printf("当前温度值为:%sC \\r\\n",ds18b20_temp); printf("temperature=%d\\r\\n",temperature); } /* USER CODE END TempTask */复制代码实在没辙了,在任务里面保护了下。好了。 仅仅保护初始化函数不行。
[/quote][quote]不过这样可能会对其他地方有影响。
huarana: (2016-10-14 18:45) 
29
514
606
金牌会员
本版积分规则 发表回复 回帖后跳转到最后一页
|小黑屋|Archiver|手机版|硬汉嵌入式论坛
GMT+8, 2025-4-26 13:39 , Processed in 0.308808 second(s), 33 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2023, Tencent Cloud.