【发布时间】:2022-01-10 04:10:10
【问题描述】:
所以我基本上有一个温度传感器和一个光敏电阻,我试图弄清楚如何分离我得到的值。这是我到目前为止所做的:
#define type_temp 0
#define type_photo 1
typedef struct AMESSAGE{
char type;
uint8_t adc;
} AMESSAGE;
我尝试定义两种不同类型的数据并将其分配给我项目中的每个 ADC。然后我尝试在我的项目中调用这两种不同的类型,但它不起作用。我想知道我做错了什么。我最好的猜测是我创建的结构不正确。
void MyTask1(void *pvParameters)
{
AMESSAGE xMessage;
uint8_t adc;
uint8_t adc1;
int16_t vin;
int16_t vin1;
char str[80];
ADC_StartConvert();
ADC1_StartConvert();
while(1){
if (ADC_IsEndConversion(ADC_RETURN_STATUS)){ //ADC_WAIT_FOR_RESULT) ){
adc = ADC_GetResult8();
vin = ADC_CountsTo_mVolts(adc);
xMessage.adc = adc;
while ( xQueueSendToBack(xQueue, &xMessage.adc, pdMS_TO_TICKS(10)) != pdPASS){};
}
vTaskDelay( pdMS_TO_TICKS(20)); // Delay for 20ms
if (ADC1_IsEndConversion(ADC1_RETURN_STATUS)){ //ADC_WAIT_FOR_RESULT) ){
adc1 = ADC1_GetResult8();
vin1 = ADC1_CountsTo_mVolts(adc1);
xMessage.adc = adc1;
while ( xQueueSendToBack(xQueue, &xMessage.adc, pdMS_TO_TICKS(10)) != pdPASS){};
}
vTaskDelay( pdMS_TO_TICKS(20)); // Delay for 20ms
}
}
【问题讨论】:
-
您是否尝试过仅从其中一个传感器获取数据?让它工作,对另一个传感器本身做同样的事情,然后尝试以某种方式组合它们。
-
嗨,是的,我的两个传感器都单独工作,我只是对如何分离数据感到困惑,也非常感谢您的回复。
-
您必须使消息不同,例如通过将 aMessage.type 设置为每个传感器的不同值,我假设这就是
type_temp和type_photo的用途。仅供参考,一个常见的约定是将这些常量全部大写,并使用枚举。
标签: c embedded freertos task-queue