我这个是用AD转换达到热敏电阻测温的程序 里面是用到一个 热敏电阻B值个阻值的计算 里面的ln()这个对数函数编译时会报错 #include "stm8l15x.h" //STM8L051/151公用库函数 #include "usart1.h" #include "adc.h" void Delay(__IO uint16_t nCount) { while (nCount != 0) { nCount--; } } u16 value; double u_value; //电压 float i_value;//电流 float r_value; //电阻 float t_value; //k度 绝度温度+摄氏度 float T_value; //摄氏度 float adc_value=3.14; void main(void) { usart1_init(); adc_init(); while(1) { ADC_SoftwareStartConv( ADC1);//开始转换 while( !ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//等待转换完成 ADC_ClearFlag( ADC1, ADC_FLAG_EOC); value=ADC_GetConversionValue( ADC1); u_value=(double)value*3300UL/4095UL/1000; i_value=(float)(3.3-u_value)/20000; r_value=(float)value/1000/i_value; t_value=(1297*309.65)/ln(r_value/7724); // 这个ln()这里怎样去表达 //1297为B值 求K度 T0是309.65 R0是7724 T_value=t_value-273.15; //摄氏 度 Delay(60000); printf("adc_value=%f\r\n",adc_value); Delay(60000); } } |
如果ln函数不是随便命名的话,那应该是LOG函数,也就是求对数。
C库应该是#include<math.h>
其他的,百度吧
评分
查看全部评分
评分
查看全部评分
不知道你要干啥?又没说报的什么错,有什么错,在报错信息里都会提示。
如果ln(),是指的以10为底的对数的话。
那么有两点,文件必须先包含#include<math.h>;再次在keil下需要使用log10(),因为没有ln()这个函数。
评分
查看全部评分
原来要用到log10() 刚试过 没报错了
评分
查看全部评分
还笑,还笑,快设置已解决。
下次用到数学计算,记得包含math.h,函数拿不准就打开math.h看看。