|
本帖最后由 8951 于 2020-9-30 13:27 编辑
自己写了一个FM33L0x读取芯片自带温度传感器的程序,但是数值和实际值相差很大返回值大概1300,各位,帮下忙,谢谢
问题已经解决(下载.11例程即可),谢谢楼下(回复限制了)
.11例程:http://www.fmdevelopers.com.cn/f ... 65&fromuid=3188
// 温度传感器
uint32_t GetTemperatureSample(void)
{
uint32 ADCRdresult;
RCC_OPC_CR2_ADCPRSC_Set(RCC_OPC_CR2_ADCPRSC_DIV16); // ADC时钟32分频
RCC_OPC_CR2_ADCCKE_Setable(ENABLE); // ADC时钟使能
PMU_BUF_CR_VREFPTAT_EN_Setable(ENABLE); // 温度通道使能
PMU_BUF_CR_VPTATBUFFER_EN_Setable(ENABLE);
ADC_CHER_TSCH_Setable(ENABLE); // 温度传感器测量通道
ADC_ISR_EOC_Clr();
ADC_CR_ADEN_Setable(ENABLE); // 启动ADC
TicksDelayUs(20); // 软件延时至少5个ADC工作时钟
ADC_CR_START_Setable(ENABLE); // 开始转换
// 等待转换完成
while (ADC_ISR_EOC_Chk() == RESET);
ADC_ISR_EOC_Clr();
ADCRdresult=ADC_DR_Read();
ADC_CR_ADEN_Setable(DISABLE); // 关闭ADC
while(ADC_ISR_BUSY_Chk());
RCC_OPC_CR2_ADCCKE_Setable(DISABLE); // ADC时钟关闭
PMU_BUF_CR_VREFPTAT_EN_Setable(DISABLE); // 温度通道关闭
PMU_BUF_CR_VPTATBUFFER_EN_Setable(DISABLE);
ADC_CHER_TSCH_Setable(DISABLE); // 温度传感器关闭
// 转换结果
return ADCRdresult;
}
|
|