色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32 的內部溫度傳感器

          STM32 的內部溫度傳感器

          作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
          STM32有一個內部的溫度傳感器,可以用來測量CPU及周圍的溫度(TA)。該溫度傳感器在內部和ADCx_IN16輸入通道相連接,此通道把傳感器輸出的電壓轉換成數(shù)字值。溫度傳感器模擬輸入推薦采樣時間是17.1μs。STM32的內部溫度傳感器支持的溫度范圍為:-40~125度。精度比較差,為±1.5℃左右。

          器的使用很簡單,只要設置一下內部ADC,并激活其內部通道就差不多了。

          本文引用地址:http://cafeforensic.com/article/201611/317046.htm

          STM32內部溫度傳感器使用的步驟了,如下:

          1)設置ADC,開啟內部溫度傳感器。

          ADC_TempSensorVrefintCmd(ENABLE);//開啟內部溫度傳感器功能:

          2)讀取通道16的AD值,計算結果。

          在設置完之后,我們就可以讀取溫度傳感器的電壓值了

          1. //初始化ADC
          2. //這里我們僅以規(guī)則通道為例
          3. //我們默認將開啟通道0~3
          4. voidT_Adc_Init(void)//ADC通道初始化
          5. {
          6. ADC_InitTypeDef ADC_InitStructure;
          7. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);//使能GPIOA,ADC1通道時鐘
          8. RCC_ADCCLKConfig(RCC_PCLK2_Div6);//分頻因子6時鐘為72M/6=12MHz
          9. ADC_DeInit(ADC1);//將外設 ADC1 的全部寄存器重設為缺省值
          10. ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在獨立模式
          11. ADC_InitStructure.ADC_ScanConvMode=DISABLE;//模數(shù)轉換工作在單通道模式
          12. ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//模數(shù)轉換工作在單次轉換模式
          13. ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//轉換由軟件而不是外部觸發(fā)啟動
          14. ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對齊
          15. ADC_InitStructure.ADC_NbrOfChannel=1;//順序進行規(guī)則轉換的ADC通道的數(shù)目
          16. ADC_Init(ADC1,&ADC_InitStructure);//根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設ADCx的寄存器
          17. ADC_TempSensorVrefintCmd(ENABLE);//開啟內部溫度傳感器
          18. ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1
          19. ADC_ResetCalibration(ADC1);//重置指定的ADC1的復位寄存器
          20. while(ADC_GetResetCalibrationStatus(ADC1));//獲取ADC1重置校準寄存器的狀態(tài),設置狀態(tài)則等待
          21. ADC_StartCalibration(ADC1);//
          22. while(ADC_GetCalibrationStatus(ADC1));//獲取指定ADC1的校準程序,設置狀態(tài)則等待
          23. }
          24. u16 T_Get_Adc(u8 ch)
          25. {
          26. ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);//ADC1,ADC通道3,第一個轉換,采樣時間為239.5周期
          27. ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能指定的ADC1的軟件轉換啟動功能
          28. while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待轉換結束
          29. returnADC_GetConversionValue(ADC1);//返回最近一次ADC1規(guī)則組的轉換結果
          30. }
          31. //得到ADC采樣內部溫度傳感器的值
          32. //取10次,然后平均
          33. u16 T_Get_Temp(void)
          34. {
          35. u16 temp_val=0;
          36. u8 t;
          37. for(t=0;t<10;t++)
          38. {
          39. temp_val+=T_Get_Adc(ADC_Channel_16);//TampSensor
          40. delay_ms(5);
          41. }
          42. returntemp_val/10;
          43. }
          44. //獲取通道ch的轉換值
          45. //取times次,然后平均
          46. u16 T_Get_Adc_Average(u8 ch,u8 times)
          47. {
          48. u32 temp_val=0;
          49. u8 t;
          50. for(t=0;t
          51. {
          52. temp_val+=T_Get_Adc(ch);
          53. delay_ms(5);
          54. }
          55. returntemp_val/times;
          56. }



          評論


          技術專區(qū)

          關閉