Sergii Kaplia
/
Internal_Temperature_F103RB1
test
Diff: main.cpp
- 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); } }