Reading temperature sensor built into STM32F103RB chips

Dependencies:   mbed

Revision:
2:bd6594739176
Parent:
1:09a5e83ea18f
Child:
4:f5c604b5eceb
--- a/main.cpp	Mon Mar 28 07:02:30 2016 +0000
+++ b/main.cpp	Mon Mar 28 08:14:41 2016 +0000
@@ -1,22 +1,25 @@
-// Reading internal temperature sensor of STM32F103RB chip
+/*
+ * Reading built-in temperature sensor of STM32F103RB chip on NUCLEO-F103RB board
+ */
 
 #include "mbed.h"
 
-// STM32F103x datasheet:
-// 5.3.19 "Temperature sensor characteristics" 
-// Table 50. "TS characteristics", Page 80
+/* 
+ * STM32F103x data-sheet:
+ * 5.3.19 Temperature sensor characteristics 
+ * Table 50. TS characteristics, Page 80
+ */
 const float         AVG_SLOPE   = 4.3E-03;
 const float         V25         = 1.43;
 const float         ACD_TO_VOLT = 3.3 / 4096;
 
 Serial              pc(USBTX, USBRX);
-DigitalOut          myled(LED1);
+DigitalOut          led(LED1);
 ADC_HandleTypeDef   hadc1;
+uint16_t            adcValue;
 float               temp;
-uint16_t            adcValue;
 
 /* ADC1 init function */
-extern "C"
 void MX_ADC1_Init(void) {
     ADC_ChannelConfTypeDef  sConfig;
 
@@ -44,15 +47,17 @@
     while(HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK);
 
     while(1) {        
-        myled = !myled;
-        // STM32F103xx Reference Manual:
-        // 11.10 Temperature sensor
-        // Reading the temperature, Page 235
+        /*
+         * STM32F103xx Reference Manual:
+         * 11.10 Temperature sensor
+         * Reading the temperature, Page 235
+         */
         HAL_ADC_Start(&hadc1);
         while(HAL_ADC_PollForConversion(&hadc1, 1000000) != HAL_OK);
         adcValue = HAL_ADC_GetValue(&hadc1);
         temp = (V25 - adcValue * ACD_TO_VOLT) / AVG_SLOPE + 25.0f;
         pc.printf("temp = %3.1f%cC\n", temp, 176);
+        led = !led;
         wait_ms(1000);
    }
 }