灵动微mm32f140内部温度采集

最近第一用灵动微芯片,对芯片内存温度采集

ADC_InitTypeDef  ADC_InitStruct;
        
    RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE);
        
          ADC_StructInit(&ADC_InitStruct);
    ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
   // ADC_InitStruct.ADC_Prescaler  = ADC_Prescaler_16;
          ADC_InitStruct.ADC_PRESCARE = ADC_PCLK2_PRESCARE_16;
    ADC_InitStruct.ADC_Mode       = ADC_CR_CONTINUE ;
    ADC_InitStruct.ADC_DataAlign  = ADC_DataAlign_Right;
    ADC_Init(ADC1, &ADC_InitStruct);

                ADC_RegularChannelConfig(ADC1, ADC_Channel_TempSensor, 0, ADC_Samctl_239_5);
          ADC_RegularChannelConfig(ADC1, ADC_Channel_VoltReference, 0, ADC_Samctl_239_5);
                        
                ADC_TempSensorCmd(ENABLE);
    ADC_VrefintCmd(ENABLE);
        
          ADC_Cmd(ADC1, ENABLE);
                
                ADC_SoftwareStartConvCmd(ADC1, ENABLE);
                
                while(1){
         
                while (RESET == ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))
        {
        }        
        ADC_ClearFlag(ADC1, ADC_FLAG_EOC);
                                
                                V_Cal  = *(uint16_t*)(0x1FFFF7E0);
                                Vref = (V_Cal*(float)3.3 )/ (float)4096.0;
                                V_now = ((u16)ADC1->ADDR15) * (float)3.3 / (float)4096.0;
                                
                  
                                Avg_Slope = 4.955;
                                T_Cal  = *(uint16_t*)(0x1FFFF7F6);
                                T_now = (((u16)ADC1->ADDR14) - T_Cal) / 4.955 + 25;
                                
      
                }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值