我正在为热敏电阻查找表,但遇到以下错误:
C5029(E)期望表达
以下是有关我使用的环境和工具的一些信息:
-瑞萨RX111微控制器
-e2studio程序环境,使用C语言
瑞萨电子的-E1调试器
-参考:http://coactionos.com/embedded%20design%20tips/2013/10/03/Tips-ADC-Thermistor-Circuit-and-Lookup-Table/
以下是我尝试实现的代码:
/**********************************************************************/
#define TABLE_SIZE 24
typedef struct
{
float x;
float y;
} dsp_lookup_f_t;
float dsp_lookup_f(const dsp_lookup_f_t * table, float x, int size)
{
int i;
float m;
i = 0;
// find the two points in the table to use
while((i < (size)) && (x > table[i].x))
{
i++;
}
// make sure the point isn't past the end of the table
if(i == size)
{
return table[i-1].y;
}
// make sure the point isn't before the beginning of the table
if(i == 0)
{
return table[i].y;
}
// calculate the slope
m = (table[i].y - table[i-1].y) / (table[i].x - table[i-1].x);
// this is the solution to the point slope formula
return m * (x - table[i].x) + table[i].y;
}
dsp_lookup_f_t my_table[TABLE_SIZE] =
{
{ .x= 18373 , .y= -40 },
{ .x= 56654 , .y= -35 },
{ .x= 87176 , .y= -30 },
{ .x= 111321 , .y= -25 },
{ .x= 130338 , .y= -20 },
{ .x= 145291 , .y= -15 },
{ .x= 157048 , .y= -10 },
{ .x= 166307 , .y= -5 },
{ .x= 173618 , .y= 0 },
{ .x= 179412 , .y= 5 },
{ .x= 184019 , .y= 10 },
{ .x= 187698 , .y= 15 },
{ .x= 190651 , .y= 20 },
{ .x= 193029 , .y= 25 },
{ .x= 194955 , .y= 30 },
{ .x= 196521 , .y= 35 },
{ .x= 197801 , .y= 40 },
{ .x= 198851 , .y= 45 },
{ .x= 199716 , .y= 50 },
{ .x= 200433 , .y= 55 },
{ .x= 201029 , .y= 60 },
{ .x= 201526 , .y= 65 },
{ .x= 201943 , .y= 70 },
{ .x= 202292 , .y= 75 }
};
/**********************************************************************/
我遇到的问题是桌子。我对结构的设计不是很熟练,但是我使用了前面提到的参考来帮助我编写代码。我不确定是否遗漏了明显的内容,但是有人建议我向正确的方向发展吗?我会很感激任何人必须提供的任何意见。
最佳答案
我想到了。我只需要从表中删除“ .x =”和“ .y =”。