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
- Committer:
- amirchaudhary
- Date:
- 2019-01-07
- Revision:
- 11:9e35ddff7ed8
- Parent:
- 10:9a4efdd07a77
- Child:
- 12:8d057a5bf72e
File content as of revision 11:9e35ddff7ed8:
#include "mbed.h"
#include "board.h"
#include "SerialDisplay.h"
AnalogIn Vbat(A1);
AnalogIn Led1(A2);
AnalogIn Led2(A5);
AnalogIn RM(PC_2);
AnalogIn Vce(PB_1);
/**
* Main application entry point.
*/
Serial pc(SERIAL_TX, SERIAL_RX,115200);
int MY_SetSysClock_PLL_HSE(void)
{
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
/* Enable HSE and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON; /* External 8 MHz xtal on OSC_IN/OSC_OUT */
// PLLCLK = (8 MHz * 8)/2 = 32 MHz
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_8;
RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
return (-1); // FAIL
}
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 32 MHz
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 32 MHz
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; // 32 MHz
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 32 MHz
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
return (-2); // FAIL
}
/* Enable HSE and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_MSI;
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
RCC_OscInitStruct.MSIState = RCC_MSI_OFF;
RCC_OscInitStruct.HSI48State = RCC_HSI48_OFF;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
return (-3); // FAIL
}
return 0; // OK
}
void my_patch(void)
{
int retVal;
// Put device into default clock, i.e using MSI = 2MHz
HAL_RCC_DeInit();
// Enable HSE clock
retVal = MY_SetSysClock_PLL_HSE();
if(retVal< 0)
{
// fail
//pc.printf("Failed to start HSE, ERR= %d\r\n", retVal);
// indicate error
while(1)
{
}
}
}
int main()
{
pc.printf("mbed-os-rev: %d.%d.%d lib-rev: %d\r\n", \
MBED_MAJOR_VERSION, MBED_MINOR_VERSION,MBED_PATCH_VERSION,MBED_LIBRARY_VERSION);
pc.printf("BUILD= %s, SysClock= %d, RCC= %0X\r\n", __TIME__, SystemCoreClock, RCC->CR);
my_patch();
pc.printf("NEW SysClock= %d, NEW RCC= %0X\r\n", SystemCoreClock, RCC->CR);
wait(3);
printf("\n");
printf("\n");
int min=0;
float meas_Vbat,meas_Led1,meas_Led2,meas_RM,meas_Vce;
float v_Vbat,v_Led1,v_Led2,v_RM,v_Vce;
// float meas_v;
// printf("\tAnalogIn example\n");
printf("min");
printf("\tVbat");
printf("\tLED1");
printf("\tLED2");
printf("\tRM");
printf("\tVce");
printf("\n");
while(1) {
meas_Vbat = Vbat.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
meas_Led1 = Led1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
meas_Led2 = Led2.read();
meas_RM = RM.read();
meas_Vce = Vce.read();
// Display readings
v_Vbat = meas_Vbat*3300*2;
v_Led1 = meas_Led1*3300;
v_Led2 = meas_Led2*3300;
v_RM = meas_RM*3300;
v_Vce = meas_Vce*3300;
printf("%d\t", min);
printf("%.0f\t", v_Vbat);
printf("%.0f\t", v_Led1);
printf("%.0f\t", v_Led2);
printf("%.0f\t", v_RM);
printf("%.0f\n", v_Vce);
wait(5.0); // 1 second
min++;
}
}