rt-thread DS18B02 温度采集程序

该代码示例展示了如何在STM32微控制器上,基于RT-Thread实时操作系统,通过DS18B20传感器进行温度采集。代码包括复位、检查传感器响应、写入和读取字节的函数,以及启动温度转换和获取温度值的函数。此外,还创建了一个线程来周期性读取温度,并根据温度值控制LED的状态。

下述代码为stm32在rt-thread平台下通过DS18B20采集温度的代码,温度较之实际温度扩大了10倍


static  rt_thread_t ds18b20_tid=NULL;


///* 引脚编号,通过查看设备驱动文件drv_gpio.c确定 */
#define DS18B20_DQ      2  /* PA11 */


//复位DS18B20
void DS18B20_Rst(void)	   
{       
    rt_pin_mode(DS18B20_DQ, PIN_MODE_OUTPUT);// 引脚为输出模式
    rt_pin_write(DS18B20_DQ, PIN_LOW);       //拉低DQ
    rt_hw_us_delay(750);                     //拉低750us(480 ~ 960us)
    rt_pin_mode(DS18B20_DQ, PIN_MODE_INPUT); //设置为输入,即可释放总线的占用
    //进入接收模式,等待应答信号。
}

//等待DS18B20的回应
//返回1:未检测到DS18B20的存在    返回0:存在
//等待了30us,  从机回应为108us,正常。

uint8_t DS18B20_Check(void) 	   
{   
    uint8_t retry=0;
	//------------------等待时间----------------------------------
	rt_hw_us_delay(15);   						 //15 ~60us 等待
    while (rt_pin_read(DS18B20_DQ)&&retry<100)  //最多还等待100us
    {
           retry++;
           rt_hw_us_delay(1);
     };	 
    if(retry>=100)  return 1;                 //100us未响应,则判断未检测到
    else retry=0;
	 
	 //-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值