Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed LoRaWAN-lib SX1276Lib
app/main.cpp@11:9e35ddff7ed8, 2019-01-07 (annotated)
- Committer:
- amirchaudhary
- Date:
- Mon Jan 07 17:08:38 2019 +0000
- Revision:
- 11:9e35ddff7ed8
- Parent:
- 10:9a4efdd07a77
- Child:
- 12:8d057a5bf72e
PCB_Analog_Values
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| mluis | 0:92bca02df485 | 1 | #include "mbed.h" | 
| mluis | 0:92bca02df485 | 2 | #include "board.h" | 
| mluis | 0:92bca02df485 | 3 | #include "SerialDisplay.h" | 
| mluis | 0:92bca02df485 | 4 | |
| mluis | 1:352f608c3337 | 5 | |
| amirchaudhary | 11:9e35ddff7ed8 | 6 | AnalogIn Vbat(A1); | 
| amirchaudhary | 11:9e35ddff7ed8 | 7 | AnalogIn Led1(A2); | 
| amirchaudhary | 11:9e35ddff7ed8 | 8 | AnalogIn Led2(A5); | 
| amirchaudhary | 11:9e35ddff7ed8 | 9 | AnalogIn RM(PC_2); | 
| amirchaudhary | 11:9e35ddff7ed8 | 10 | AnalogIn Vce(PB_1); | 
| uss1994 | 10:9a4efdd07a77 | 11 | |
| uss1994 | 10:9a4efdd07a77 | 12 | |
| mluis | 0:92bca02df485 | 13 | /** | 
| mluis | 0:92bca02df485 | 14 | * Main application entry point. | 
| mluis | 0:92bca02df485 | 15 | */ | 
| amirchaudhary | 11:9e35ddff7ed8 | 16 | Serial pc(SERIAL_TX, SERIAL_RX,115200); | 
| amirchaudhary | 11:9e35ddff7ed8 | 17 | int MY_SetSysClock_PLL_HSE(void) | 
| mluis | 0:92bca02df485 | 18 | { | 
| amirchaudhary | 11:9e35ddff7ed8 | 19 | RCC_ClkInitTypeDef RCC_ClkInitStruct; | 
| amirchaudhary | 11:9e35ddff7ed8 | 20 | RCC_OscInitTypeDef RCC_OscInitStruct; | 
| mluis | 7:3173f0508a98 | 21 | |
| amirchaudhary | 11:9e35ddff7ed8 | 22 | /* Enable HSE and activate PLL with HSE as source */ | 
| amirchaudhary | 11:9e35ddff7ed8 | 23 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; | 
| amirchaudhary | 11:9e35ddff7ed8 | 24 | RCC_OscInitStruct.HSEState = RCC_HSE_ON; /* External 8 MHz xtal on OSC_IN/OSC_OUT */ | 
| mluis | 7:3173f0508a98 | 25 | |
| amirchaudhary | 11:9e35ddff7ed8 | 26 | // PLLCLK = (8 MHz * 8)/2 = 32 MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 27 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | 
| amirchaudhary | 11:9e35ddff7ed8 | 28 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | 
| amirchaudhary | 11:9e35ddff7ed8 | 29 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_8; | 
| amirchaudhary | 11:9e35ddff7ed8 | 30 | RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2; | 
| amirchaudhary | 11:9e35ddff7ed8 | 31 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { | 
| amirchaudhary | 11:9e35ddff7ed8 | 32 | return (-1); // FAIL | 
| amirchaudhary | 11:9e35ddff7ed8 | 33 | } | 
| mluis | 0:92bca02df485 | 34 | |
| amirchaudhary | 11:9e35ddff7ed8 | 35 | /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ | 
| amirchaudhary | 11:9e35ddff7ed8 | 36 | RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); | 
| amirchaudhary | 11:9e35ddff7ed8 | 37 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 32 MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 38 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 32 MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 39 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; // 32 MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 40 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 32 MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 41 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) { | 
| amirchaudhary | 11:9e35ddff7ed8 | 42 | return (-2); // FAIL | 
| amirchaudhary | 11:9e35ddff7ed8 | 43 | } | 
| mluis | 3:9c6f7f082151 | 44 | |
| amirchaudhary | 11:9e35ddff7ed8 | 45 | /* Enable HSE and activate PLL with HSE as source */ | 
| amirchaudhary | 11:9e35ddff7ed8 | 46 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_MSI; | 
| amirchaudhary | 11:9e35ddff7ed8 | 47 | RCC_OscInitStruct.HSIState = RCC_HSI_OFF; | 
| amirchaudhary | 11:9e35ddff7ed8 | 48 | RCC_OscInitStruct.MSIState = RCC_MSI_OFF; | 
| amirchaudhary | 11:9e35ddff7ed8 | 49 | RCC_OscInitStruct.HSI48State = RCC_HSI48_OFF; | 
| amirchaudhary | 11:9e35ddff7ed8 | 50 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; | 
| amirchaudhary | 11:9e35ddff7ed8 | 51 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { | 
| amirchaudhary | 11:9e35ddff7ed8 | 52 | return (-3); // FAIL | 
| amirchaudhary | 11:9e35ddff7ed8 | 53 | } | 
| amirchaudhary | 11:9e35ddff7ed8 | 54 | |
| amirchaudhary | 11:9e35ddff7ed8 | 55 | return 0; // OK | 
| amirchaudhary | 11:9e35ddff7ed8 | 56 | } | 
| mluis | 3:9c6f7f082151 | 57 | |
| amirchaudhary | 11:9e35ddff7ed8 | 58 | void my_patch(void) | 
| amirchaudhary | 11:9e35ddff7ed8 | 59 | { | 
| amirchaudhary | 11:9e35ddff7ed8 | 60 | int retVal; | 
| amirchaudhary | 11:9e35ddff7ed8 | 61 | |
| amirchaudhary | 11:9e35ddff7ed8 | 62 | // Put device into default clock, i.e using MSI = 2MHz | 
| amirchaudhary | 11:9e35ddff7ed8 | 63 | HAL_RCC_DeInit(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 64 | |
| amirchaudhary | 11:9e35ddff7ed8 | 65 | // Enable HSE clock | 
| amirchaudhary | 11:9e35ddff7ed8 | 66 | retVal = MY_SetSysClock_PLL_HSE(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 67 | if(retVal< 0) | 
| amirchaudhary | 11:9e35ddff7ed8 | 68 | { | 
| amirchaudhary | 11:9e35ddff7ed8 | 69 | // fail | 
| amirchaudhary | 11:9e35ddff7ed8 | 70 | //pc.printf("Failed to start HSE, ERR= %d\r\n", retVal); | 
| amirchaudhary | 11:9e35ddff7ed8 | 71 | |
| amirchaudhary | 11:9e35ddff7ed8 | 72 | // indicate error | 
| amirchaudhary | 11:9e35ddff7ed8 | 73 | while(1) | 
| amirchaudhary | 11:9e35ddff7ed8 | 74 | { | 
| mluis | 3:9c6f7f082151 | 75 | |
| amirchaudhary | 11:9e35ddff7ed8 | 76 | } | 
| amirchaudhary | 11:9e35ddff7ed8 | 77 | } | 
| amirchaudhary | 11:9e35ddff7ed8 | 78 | } | 
| mluis | 5:1e9f6a365854 | 79 | |
| amirchaudhary | 11:9e35ddff7ed8 | 80 | int main() | 
| amirchaudhary | 11:9e35ddff7ed8 | 81 | { | 
| amirchaudhary | 11:9e35ddff7ed8 | 82 | |
| amirchaudhary | 11:9e35ddff7ed8 | 83 | pc.printf("mbed-os-rev: %d.%d.%d lib-rev: %d\r\n", \ | 
| amirchaudhary | 11:9e35ddff7ed8 | 84 | MBED_MAJOR_VERSION, MBED_MINOR_VERSION,MBED_PATCH_VERSION,MBED_LIBRARY_VERSION); | 
| amirchaudhary | 11:9e35ddff7ed8 | 85 | pc.printf("BUILD= %s, SysClock= %d, RCC= %0X\r\n", __TIME__, SystemCoreClock, RCC->CR); | 
| amirchaudhary | 11:9e35ddff7ed8 | 86 | my_patch(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 87 | pc.printf("NEW SysClock= %d, NEW RCC= %0X\r\n", SystemCoreClock, RCC->CR); | 
| amirchaudhary | 11:9e35ddff7ed8 | 88 | wait(3); | 
| amirchaudhary | 11:9e35ddff7ed8 | 89 | |
| amirchaudhary | 11:9e35ddff7ed8 | 90 | printf("\n"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 91 | printf("\n"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 92 | int min=0; | 
| amirchaudhary | 11:9e35ddff7ed8 | 93 | float meas_Vbat,meas_Led1,meas_Led2,meas_RM,meas_Vce; | 
| amirchaudhary | 11:9e35ddff7ed8 | 94 | float v_Vbat,v_Led1,v_Led2,v_RM,v_Vce; | 
| amirchaudhary | 11:9e35ddff7ed8 | 95 | // float meas_v; | 
| amirchaudhary | 11:9e35ddff7ed8 | 96 | // printf("\tAnalogIn example\n"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 97 | printf("min"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 98 | printf("\tVbat"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 99 | printf("\tLED1"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 100 | printf("\tLED2"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 101 | printf("\tRM"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 102 | printf("\tVce"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 103 | printf("\n"); | 
| amirchaudhary | 11:9e35ddff7ed8 | 104 | |
| amirchaudhary | 11:9e35ddff7ed8 | 105 | |
| amirchaudhary | 11:9e35ddff7ed8 | 106 | while(1) { | 
| amirchaudhary | 11:9e35ddff7ed8 | 107 | |
| amirchaudhary | 11:9e35ddff7ed8 | 108 | meas_Vbat = Vbat.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range) | 
| amirchaudhary | 11:9e35ddff7ed8 | 109 | meas_Led1 = Led1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range) | 
| amirchaudhary | 11:9e35ddff7ed8 | 110 | meas_Led2 = Led2.read(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 111 | meas_RM = RM.read(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 112 | meas_Vce = Vce.read(); | 
| amirchaudhary | 11:9e35ddff7ed8 | 113 | |
| amirchaudhary | 11:9e35ddff7ed8 | 114 | // Display readings | 
| amirchaudhary | 11:9e35ddff7ed8 | 115 | v_Vbat = meas_Vbat*3300*2; | 
| amirchaudhary | 11:9e35ddff7ed8 | 116 | v_Led1 = meas_Led1*3300; | 
| amirchaudhary | 11:9e35ddff7ed8 | 117 | v_Led2 = meas_Led2*3300; | 
| amirchaudhary | 11:9e35ddff7ed8 | 118 | v_RM = meas_RM*3300; | 
| amirchaudhary | 11:9e35ddff7ed8 | 119 | v_Vce = meas_Vce*3300; | 
| amirchaudhary | 11:9e35ddff7ed8 | 120 | |
| amirchaudhary | 11:9e35ddff7ed8 | 121 | |
| amirchaudhary | 11:9e35ddff7ed8 | 122 | printf("%d\t", min); | 
| amirchaudhary | 11:9e35ddff7ed8 | 123 | printf("%.0f\t", v_Vbat); | 
| amirchaudhary | 11:9e35ddff7ed8 | 124 | printf("%.0f\t", v_Led1); | 
| amirchaudhary | 11:9e35ddff7ed8 | 125 | printf("%.0f\t", v_Led2); | 
| amirchaudhary | 11:9e35ddff7ed8 | 126 | printf("%.0f\t", v_RM); | 
| amirchaudhary | 11:9e35ddff7ed8 | 127 | printf("%.0f\n", v_Vce); | 
| amirchaudhary | 11:9e35ddff7ed8 | 128 | |
| amirchaudhary | 11:9e35ddff7ed8 | 129 | |
| amirchaudhary | 11:9e35ddff7ed8 | 130 | wait(5.0); // 1 second | 
| amirchaudhary | 11:9e35ddff7ed8 | 131 | min++; | 
| mluis | 0:92bca02df485 | 132 | } | 
| mluis | 0:92bca02df485 | 133 | } |