新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2020-5-8
- 在线时间
- 9 小时
|
1金钱
请各位帮忙看一下 在 实验18 内部温度传感器实验 例程下修改的 用串口打印 内部温度数据 有问题
一下主函数 只留下了 串口打印 其余液晶程序全部屏蔽了
int main(void)
{
//short temp;
u16 jicunqi;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
uart_init(115200); //初始化串口
//usmart_dev.init(84); //初始化USMART
//LED_Init(); //初始化LED
//LCD_Init(); //初始化LCD FSMC接口
MY_ADC_Init(); //初始化ADC1通道1
// POINT_COLOR=RED;
// LCD_ShowString(30,50,200,16,16,"WarShip STM32");
// LCD_ShowString(30,70,200,16,16,"Temperature TEST");
// LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
// LCD_ShowString(30,110,200,16,16,"2017/5/29");
// POINT_COLOR=BLUE;//设置字体为蓝色
// LCD_ShowString(30,140,200,16,16,"TEMPERATE: 00.00C");//先在固定位置显示小数点
while(1)
{
delay_ms(2000);
jicunqi=Get_Adc(ADC_CHANNEL_TEMPSENSOR);
printf("AD转换原始值 = %04d \r\n", jicunqi);
// temp=Get_Temprate(); //得到温度值
// if(temp<0)
// {
// temp=-temp;
// LCD_ShowString(30+10*8,140,16,16,16,"-"); //显示负号
// }else LCD_ShowString(30+10*8,140,16,16,16," "); //无符号
//
// LCD_ShowxNum(30+11*8,140,temp/100,2,16,0); //显示整数部分
// LCD_ShowxNum(30+14*8,140,temp%100,2,16,0); //显示小数部分
//
// LED0=!LED0;
}
}
然后用adc.c里的Get_Adc()函数获取原始数据在室温22度下大概寄存器的值是2500
我带入温度转换公式笔算了一下,温度就是-110°
我用吹风机加热芯片 这个获取出来的2500的值是会随着温度升高而降低
//得到温度值
//返回值:温度值(扩大了100倍,单位:℃.)
short Get_Temprate(void)
{
u32 adcx;
short result;
double temperate;
adcx=Get_Adc_Average(ADC_CHANNEL_TEMPSENSOR,20);//读取内部温度传感器通道,10次取平均
temperate=(float)adcx*(3.3/4096); //电压值
temperate=(1.43-temperate)/0.0043+25; //转换为温度值
result=temperate*=100; //扩大100倍.
return result;
}
//获得ADC值
//ch: 通道值 0~16,取值范围为:ADC_CHANNEL_0~ADC_CHANNEL_16
//返回值:转换结果
u16 Get_Adc(u32 ch)
{
ADC_ChannelConfTypeDef ADC1_ChanConf;
ADC1_ChanConf.Channel=ch; //通道
ADC1_ChanConf.Rank=1; //第1个序列,序列1
ADC1_ChanConf.SamplingTime=ADC_SAMPLETIME_239CYCLES_5; //采样时间为239.5周期
HAL_ADC_ConfigChannel(&ADC1_Handler,&ADC1_ChanConf); //通道配置
HAL_ADC_Start(&ADC1_Handler); //开启ADC
HAL_ADC_PollForConversion(&ADC1_Handler,10); //轮询转换
return (u16)HAL_ADC_GetValue(&ADC1_Handler); //返回最近一次ADC1规则组的转换结果
}
请大家指点指点,我很头疼 这么简单还调试不出来
|
-
|