我正在 contiki 上运行 launchxl-cc2650、以从 dht11传感器读取温度和湿度值。 使用 contiki 构建、使用 ti 编程器构建闪存2. 但我的电路板似乎无法读取传感器的值(输出读数超时)我尝试在2个差分板和2个传感器(相同类型)上进行测试、因此我非常确定问题不是来自硬件、而是来自传感器的 LED 亮起、这意味着它具有功率。 去年、我的高级管理人员成功运行了此代码。 因此、它真的会让我弄糊涂哪些可能导致问题、将数据插入 IOID_0引脚。 代码可在 contiki-ng/dht11.c 中找到、位于 dcontiki-ng/contiki-ng·(github.com) 中、我做了一些小的扭转、代码写在下面。 与我的高级版本唯一不同的是、当我使用 make 命令进行编译时、只会生成.elf 文件、而不是.hex 和.bin 文件。 这是问题吗? 我认为这不太可能导致 TI 编程器2支持.elf 文件、并且我已使用.elf 文件和其他示例成功刷写了.elf 文件。 请举手让我为您服务。
#include "contiki.h"
#include
#include "board.h"
#include "dht11-sensor.h"
/*------------------ *
进程(dht11_process、"DHT 11 process");
autostart_processes (&dht11_process);
/*------------------ *
#define DHT11_GPIO_PORT (1)
#define DHT11_GPIO_PIN (12)
#define Board_IOID_DIO0 IOID_0
/*------------------ *
process_thread (dht11_process、EV、data)
{
静态结构 etimer 计时器;
process_bege();
dht11_sensor.configure (DHT11_configure_GPIO_PIN、IOID_0);
dht11_sensor.configure (sensor_hw_init、0);
/*等待一秒钟,使 DHT11传感器准备就绪*/
etimer_set (&timer、clock_second * 1);
/*等待周期性计时器过期*/
Process_Wait_event_until (etimer_expired (&timer)));
/*设置一个在5秒后过期的周期性计时器。 *
etimer_set (&timer、clock_second * 2);
while (1){
/*
*请求重新读取
*
sensors_activate (dht11_sensor);
switch (dht11_sensor.status (0)){
案例 DHT11_STATUS_OK:
printf ("请执行 am:%d.%d %%\n"、
dht11_sensor.value (DHT11_value_humidation_integer)、
dht11_sensor.value (DHT11_value_humidation_decimal);
printf ("Nhiet do:%d.%d *C\n"、
dht11_sensor.value (DHT11_value_temperature 整数)、
dht11_sensor.value (DHT11_value_temperature 十进制);
中断;
案例 DHT11_STATUS_CHECKSUM_FAILED:
printf ("校验和失败\n"\n);
中断;
案例 DHT11_STATUS_TIMEOUT:
printf ("读取超时\n");
中断;
默认值:
中断;
}
/*等待周期性计时器过期,然后重新启动计时器。 *
Process_Wait_event_until (etimer_expired (&timer)));
etimer_reset (&timer);
}
process_end();