完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我这个是用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=%frn",adc_value); Delay(60000); } } |
|
相关推荐
6个回答
|
|
|
|
|
|
|
|
|
|
本帖最后由 toofree 于 2018-6-2 23:48 编辑
不知道你要干啥?又没说报的什么错,有什么错,在报错信息里都会提示。 如果ln(),是指的以10为底的对数的话。 那么有两点,文件必须先包含#include |
|
|
|
报的什么错,把编译错误发出来看下。
|
|
|
|
原来要用到log10() 刚试过 没报错了 |
|
|
|
还笑,还笑,快设置已解决。 下次用到数学计算,记得包含math.h,函数拿不准就打开math.h看看。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1168 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1105 浏览 2 评论
2203 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1297 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1718 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 01:12 , Processed in 0.861123 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号