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.
main.h@0:a0c5877bd360, 2018-07-12 (annotated)
- Committer:
- fahadmirza
- Date:
- Thu Jul 12 00:50:48 2018 +0000
- Revision:
- 0:a0c5877bd360
- Child:
- 4:511677d804ac
Porting complete!
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| fahadmirza | 0:a0c5877bd360 | 1 | /* |
| fahadmirza | 0:a0c5877bd360 | 2 | _ _ _____ _______ |
| fahadmirza | 0:a0c5877bd360 | 3 | | | | | |_ _| |__ __| |
| fahadmirza | 0:a0c5877bd360 | 4 | | |__| | __ ___ __ | | ___ | | |
| fahadmirza | 0:a0c5877bd360 | 5 | | __ |/ _` \ \/ / | | / _ \| | |
| fahadmirza | 0:a0c5877bd360 | 6 | | | | | (_| |> < _| || (_) | | |
| fahadmirza | 0:a0c5877bd360 | 7 | |_| |_|\__,_/_/\_\_____\___/|_| |
| fahadmirza | 0:a0c5877bd360 | 8 | (C)2017 HaxIoT |
| fahadmirza | 0:a0c5877bd360 | 9 | |
| fahadmirza | 0:a0c5877bd360 | 10 | Description: contains hardware configuration Macros and Constants |
| fahadmirza | 0:a0c5877bd360 | 11 | License: Revised BSD License, see LICENSE.TXT file include in the project |
| fahadmirza | 0:a0c5877bd360 | 12 | */ |
| fahadmirza | 0:a0c5877bd360 | 13 | /******************************************************************************* |
| fahadmirza | 0:a0c5877bd360 | 14 | * @File Name : main.h |
| fahadmirza | 0:a0c5877bd360 | 15 | * @Author : Fahad Mirza |
| fahadmirza | 0:a0c5877bd360 | 16 | * @Created : 22 January, 2018 |
| fahadmirza | 0:a0c5877bd360 | 17 | * @Modified : 04 April, 2018 |
| fahadmirza | 0:a0c5877bd360 | 18 | * @Description : Header file for main.c |
| fahadmirza | 0:a0c5877bd360 | 19 | ********************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 20 | |
| fahadmirza | 0:a0c5877bd360 | 21 | #ifndef MAIN_H_ |
| fahadmirza | 0:a0c5877bd360 | 22 | #define MAIN_H_ |
| fahadmirza | 0:a0c5877bd360 | 23 | |
| fahadmirza | 0:a0c5877bd360 | 24 | #include "hw.h" |
| fahadmirza | 0:a0c5877bd360 | 25 | #include "debug.h" |
| fahadmirza | 0:a0c5877bd360 | 26 | #include "delay.h" |
| fahadmirza | 0:a0c5877bd360 | 27 | #include "low_power_manager.h" |
| fahadmirza | 0:a0c5877bd360 | 28 | |
| fahadmirza | 0:a0c5877bd360 | 29 | /* Macros --------------------------------------------------------------------*/ |
| fahadmirza | 0:a0c5877bd360 | 30 | // Uplink packet acknowledgment configuration |
| fahadmirza | 0:a0c5877bd360 | 31 | #define UNCONFIRMED 0 |
| fahadmirza | 0:a0c5877bd360 | 32 | #define CONFIRMED 1 |
| fahadmirza | 0:a0c5877bd360 | 33 | |
| fahadmirza | 0:a0c5877bd360 | 34 | #define ENABLE_FAST_WAKEUP |
| fahadmirza | 0:a0c5877bd360 | 35 | |
| fahadmirza | 0:a0c5877bd360 | 36 | /* Variables -----------------------------------------------------------------*/ |
| fahadmirza | 0:a0c5877bd360 | 37 | //Flag to indicate if the MCU is Initialized |
| fahadmirza | 0:a0c5877bd360 | 38 | static bool McuInitialized = false; |
| fahadmirza | 0:a0c5877bd360 | 39 | |
| fahadmirza | 0:a0c5877bd360 | 40 | |
| fahadmirza | 0:a0c5877bd360 | 41 | |
| fahadmirza | 0:a0c5877bd360 | 42 | /****************************************************************************** |
| fahadmirza | 0:a0c5877bd360 | 43 | * @brief : System Clock Configuration |
| fahadmirza | 0:a0c5877bd360 | 44 | * The system Clock is configured as follow : |
| fahadmirza | 0:a0c5877bd360 | 45 | * System Clock source = PLL (HSI) |
| fahadmirza | 0:a0c5877bd360 | 46 | * SYSCLK(Hz) = 32000000 |
| fahadmirza | 0:a0c5877bd360 | 47 | * HCLK(Hz) = 32000000 |
| fahadmirza | 0:a0c5877bd360 | 48 | * AHB Prescaler = 1 |
| fahadmirza | 0:a0c5877bd360 | 49 | * APB1 Prescaler = 1 |
| fahadmirza | 0:a0c5877bd360 | 50 | * APB2 Prescaler = 1 |
| fahadmirza | 0:a0c5877bd360 | 51 | * HSI Frequency(Hz) = 16000000 |
| fahadmirza | 0:a0c5877bd360 | 52 | * PLLMUL = 6 |
| fahadmirza | 0:a0c5877bd360 | 53 | * PLLDIV = 3 |
| fahadmirza | 0:a0c5877bd360 | 54 | * Flash Latency(WS) = 1 |
| fahadmirza | 0:a0c5877bd360 | 55 | * @retval: None |
| fahadmirza | 0:a0c5877bd360 | 56 | * @note : This function enables all the clock necessary for the demo |
| fahadmirza | 0:a0c5877bd360 | 57 | * including UARTs |
| fahadmirza | 0:a0c5877bd360 | 58 | ******************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 59 | void SystemClock_Config(void) |
| fahadmirza | 0:a0c5877bd360 | 60 | { |
| fahadmirza | 0:a0c5877bd360 | 61 | RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
| fahadmirza | 0:a0c5877bd360 | 62 | RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
| fahadmirza | 0:a0c5877bd360 | 63 | RCC_PeriphCLKInitTypeDef PeriphClkInit; |
| fahadmirza | 0:a0c5877bd360 | 64 | |
| fahadmirza | 0:a0c5877bd360 | 65 | // Enable HSI48 Oscillator for RNG analog part |
| fahadmirza | 0:a0c5877bd360 | 66 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48; |
| fahadmirza | 0:a0c5877bd360 | 67 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; |
| fahadmirza | 0:a0c5877bd360 | 68 | RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; |
| fahadmirza | 0:a0c5877bd360 | 69 | if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
| fahadmirza | 0:a0c5877bd360 | 70 | { |
| fahadmirza | 0:a0c5877bd360 | 71 | // Initialization Error |
| fahadmirza | 0:a0c5877bd360 | 72 | Error_Handler(); |
| fahadmirza | 0:a0c5877bd360 | 73 | } |
| fahadmirza | 0:a0c5877bd360 | 74 | |
| fahadmirza | 0:a0c5877bd360 | 75 | // // Enable HSI Oscillator and Activate PLL with HSI as source |
| fahadmirza | 0:a0c5877bd360 | 76 | // RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
| fahadmirza | 0:a0c5877bd360 | 77 | // RCC_OscInitStruct.HSEState = RCC_HSE_OFF; |
| fahadmirza | 0:a0c5877bd360 | 78 | // RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
| fahadmirza | 0:a0c5877bd360 | 79 | // RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
| fahadmirza | 0:a0c5877bd360 | 80 | // RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
| fahadmirza | 0:a0c5877bd360 | 81 | // RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; |
| fahadmirza | 0:a0c5877bd360 | 82 | // RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_6; |
| fahadmirza | 0:a0c5877bd360 | 83 | // RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_3; |
| fahadmirza | 0:a0c5877bd360 | 84 | // |
| fahadmirza | 0:a0c5877bd360 | 85 | // if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
| fahadmirza | 0:a0c5877bd360 | 86 | // { |
| fahadmirza | 0:a0c5877bd360 | 87 | // Error_Handler(); |
| fahadmirza | 0:a0c5877bd360 | 88 | // } |
| fahadmirza | 0:a0c5877bd360 | 89 | |
| fahadmirza | 0:a0c5877bd360 | 90 | // Set Voltage scale1 as MCU will run at 32MHz |
| fahadmirza | 0:a0c5877bd360 | 91 | __HAL_RCC_PWR_CLK_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 92 | __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); |
| fahadmirza | 0:a0c5877bd360 | 93 | |
| fahadmirza | 0:a0c5877bd360 | 94 | // Poll VOSF bit of in PWR_CSR. Wait until it is reset to 0 |
| fahadmirza | 0:a0c5877bd360 | 95 | while (__HAL_PWR_GET_FLAG(PWR_FLAG_VOS) != RESET) {}; |
| fahadmirza | 0:a0c5877bd360 | 96 | |
| fahadmirza | 0:a0c5877bd360 | 97 | // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers |
| fahadmirza | 0:a0c5877bd360 | 98 | RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); |
| fahadmirza | 0:a0c5877bd360 | 99 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
| fahadmirza | 0:a0c5877bd360 | 100 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
| fahadmirza | 0:a0c5877bd360 | 101 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; |
| fahadmirza | 0:a0c5877bd360 | 102 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
| fahadmirza | 0:a0c5877bd360 | 103 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) |
| fahadmirza | 0:a0c5877bd360 | 104 | { |
| fahadmirza | 0:a0c5877bd360 | 105 | Error_Handler(); |
| fahadmirza | 0:a0c5877bd360 | 106 | } |
| fahadmirza | 0:a0c5877bd360 | 107 | |
| fahadmirza | 0:a0c5877bd360 | 108 | |
| fahadmirza | 0:a0c5877bd360 | 109 | // // Select clock for both UART1 and UART2 |
| fahadmirza | 0:a0c5877bd360 | 110 | // PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; |
| fahadmirza | 0:a0c5877bd360 | 111 | // PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_HSI; |
| fahadmirza | 0:a0c5877bd360 | 112 | // HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit); |
| fahadmirza | 0:a0c5877bd360 | 113 | // |
| fahadmirza | 0:a0c5877bd360 | 114 | // PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; |
| fahadmirza | 0:a0c5877bd360 | 115 | // PeriphClkInit.Usart2ClockSelection = RCC_USART1CLKSOURCE_HSI; |
| fahadmirza | 0:a0c5877bd360 | 116 | // HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit); |
| fahadmirza | 0:a0c5877bd360 | 117 | |
| fahadmirza | 0:a0c5877bd360 | 118 | HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); |
| fahadmirza | 0:a0c5877bd360 | 119 | HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); |
| fahadmirza | 0:a0c5877bd360 | 120 | |
| fahadmirza | 0:a0c5877bd360 | 121 | // SysTick_IRQn interrupt configuration |
| fahadmirza | 0:a0c5877bd360 | 122 | HAL_NVIC_SetPriority(SysTick_IRQn, 1, 0); |
| fahadmirza | 0:a0c5877bd360 | 123 | } |
| fahadmirza | 0:a0c5877bd360 | 124 | |
| fahadmirza | 0:a0c5877bd360 | 125 | /****************************************************************************** |
| fahadmirza | 0:a0c5877bd360 | 126 | * @Brief : Set all pin as analog |
| fahadmirza | 0:a0c5877bd360 | 127 | * @Param : none |
| fahadmirza | 0:a0c5877bd360 | 128 | * @return: none |
| fahadmirza | 0:a0c5877bd360 | 129 | ******************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 130 | void HW_GpioInit(void) |
| fahadmirza | 0:a0c5877bd360 | 131 | { |
| fahadmirza | 0:a0c5877bd360 | 132 | GPIO_InitTypeDef GPIO_InitStruct; |
| fahadmirza | 0:a0c5877bd360 | 133 | |
| fahadmirza | 0:a0c5877bd360 | 134 | // STM32L0 Gpios are all configured as analog input at Reset |
| fahadmirza | 0:a0c5877bd360 | 135 | __HAL_RCC_GPIOA_CLK_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 136 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 137 | __HAL_RCC_GPIOC_CLK_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 138 | |
| fahadmirza | 0:a0c5877bd360 | 139 | /*GPIOC*/ |
| fahadmirza | 0:a0c5877bd360 | 140 | GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 |
| fahadmirza | 0:a0c5877bd360 | 141 | |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 |
| fahadmirza | 0:a0c5877bd360 | 142 | |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_12; |
| fahadmirza | 0:a0c5877bd360 | 143 | GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; |
| fahadmirza | 0:a0c5877bd360 | 144 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| fahadmirza | 0:a0c5877bd360 | 145 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
| fahadmirza | 0:a0c5877bd360 | 146 | |
| fahadmirza | 0:a0c5877bd360 | 147 | /*GPIOA*/ |
| fahadmirza | 0:a0c5877bd360 | 148 | GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_6 |
| fahadmirza | 0:a0c5877bd360 | 149 | |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 |
| fahadmirza | 0:a0c5877bd360 | 150 | |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15; |
| fahadmirza | 0:a0c5877bd360 | 151 | |
| fahadmirza | 0:a0c5877bd360 | 152 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| fahadmirza | 0:a0c5877bd360 | 153 | |
| fahadmirza | 0:a0c5877bd360 | 154 | /*GPIOB*/ |
| fahadmirza | 0:a0c5877bd360 | 155 | GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10 |
| fahadmirza | 0:a0c5877bd360 | 156 | |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 |
| fahadmirza | 0:a0c5877bd360 | 157 | |GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5 |
| fahadmirza | 0:a0c5877bd360 | 158 | |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; |
| fahadmirza | 0:a0c5877bd360 | 159 | |
| fahadmirza | 0:a0c5877bd360 | 160 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| fahadmirza | 0:a0c5877bd360 | 161 | |
| fahadmirza | 0:a0c5877bd360 | 162 | __HAL_RCC_GPIOA_CLK_DISABLE(); |
| fahadmirza | 0:a0c5877bd360 | 163 | __HAL_RCC_GPIOB_CLK_DISABLE(); |
| fahadmirza | 0:a0c5877bd360 | 164 | __HAL_RCC_GPIOC_CLK_DISABLE(); |
| fahadmirza | 0:a0c5877bd360 | 165 | } |
| fahadmirza | 0:a0c5877bd360 | 166 | |
| fahadmirza | 0:a0c5877bd360 | 167 | /****************************************************************************** |
| fahadmirza | 0:a0c5877bd360 | 168 | * @Brief : This function initializes the hardware |
| fahadmirza | 0:a0c5877bd360 | 169 | * @Param : None |
| fahadmirza | 0:a0c5877bd360 | 170 | * @Retval: None |
| fahadmirza | 0:a0c5877bd360 | 171 | ******************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 172 | void HW_Init(void) |
| fahadmirza | 0:a0c5877bd360 | 173 | { |
| fahadmirza | 0:a0c5877bd360 | 174 | if(McuInitialized == false) |
| fahadmirza | 0:a0c5877bd360 | 175 | { |
| fahadmirza | 0:a0c5877bd360 | 176 | // Reset of all peripherals, Initializes the Flash interface and the Systick. |
| fahadmirza | 0:a0c5877bd360 | 177 | HAL_Init(); |
| fahadmirza | 0:a0c5877bd360 | 178 | SystemClock_Config(); |
| fahadmirza | 0:a0c5877bd360 | 179 | HW_GpioInit(); |
| fahadmirza | 0:a0c5877bd360 | 180 | Debug_UART_Init(); |
| fahadmirza | 0:a0c5877bd360 | 181 | |
| fahadmirza | 0:a0c5877bd360 | 182 | #if defined( USE_BOOTLOADER ) |
| fahadmirza | 0:a0c5877bd360 | 183 | /* Set the Vector Table base location at 0x3000 */ |
| fahadmirza | 0:a0c5877bd360 | 184 | NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x3000 ); |
| fahadmirza | 0:a0c5877bd360 | 185 | #endif |
| fahadmirza | 0:a0c5877bd360 | 186 | |
| fahadmirza | 0:a0c5877bd360 | 187 | HW_RTC_Init(); |
| fahadmirza | 0:a0c5877bd360 | 188 | |
| fahadmirza | 0:a0c5877bd360 | 189 | // LED on Nucleo board |
| fahadmirza | 0:a0c5877bd360 | 190 | BSP_LED_Init(LED_GREEN); |
| fahadmirza | 0:a0c5877bd360 | 191 | // Todo: Add UART initialization here |
| fahadmirza | 0:a0c5877bd360 | 192 | McuInitialized = true; |
| fahadmirza | 0:a0c5877bd360 | 193 | } |
| fahadmirza | 0:a0c5877bd360 | 194 | } |
| fahadmirza | 0:a0c5877bd360 | 195 | |
| fahadmirza | 0:a0c5877bd360 | 196 | /****************************************************************************** |
| fahadmirza | 0:a0c5877bd360 | 197 | * @Brief : Initializes the MSP. |
| fahadmirza | 0:a0c5877bd360 | 198 | * @Param : None |
| fahadmirza | 0:a0c5877bd360 | 199 | * @retval: None |
| fahadmirza | 0:a0c5877bd360 | 200 | ******************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 201 | void HAL_MspInit(void) |
| fahadmirza | 0:a0c5877bd360 | 202 | { |
| fahadmirza | 0:a0c5877bd360 | 203 | __HAL_RCC_PWR_CLK_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 204 | |
| fahadmirza | 0:a0c5877bd360 | 205 | // Disable the Power Voltage Detector |
| fahadmirza | 0:a0c5877bd360 | 206 | HAL_PWR_DisablePVD(); |
| fahadmirza | 0:a0c5877bd360 | 207 | |
| fahadmirza | 0:a0c5877bd360 | 208 | // Enables the Ultra Low Power mode |
| fahadmirza | 0:a0c5877bd360 | 209 | HAL_PWREx_EnableUltraLowPower(); |
| fahadmirza | 0:a0c5877bd360 | 210 | |
| fahadmirza | 0:a0c5877bd360 | 211 | __HAL_FLASH_SLEEP_POWERDOWN_ENABLE(); |
| fahadmirza | 0:a0c5877bd360 | 212 | |
| fahadmirza | 0:a0c5877bd360 | 213 | /* In debug mode, e.g. when DBGMCU is activated, Arm core has always clocks |
| fahadmirza | 0:a0c5877bd360 | 214 | * And will not wait that the FLACH is ready to be read. It can miss in this |
| fahadmirza | 0:a0c5877bd360 | 215 | * case the first instruction. To overcome this issue, the flash remain clocked during sleep mode |
| fahadmirza | 0:a0c5877bd360 | 216 | */ |
| fahadmirza | 0:a0c5877bd360 | 217 | DBG( __HAL_FLASH_SLEEP_POWERDOWN_DISABLE(); ); |
| fahadmirza | 0:a0c5877bd360 | 218 | |
| fahadmirza | 0:a0c5877bd360 | 219 | #ifdef ENABLE_FAST_WAKEUP |
| fahadmirza | 0:a0c5877bd360 | 220 | /*Enable fast wakeUp*/ |
| fahadmirza | 0:a0c5877bd360 | 221 | HAL_PWREx_EnableFastWakeUp( ); |
| fahadmirza | 0:a0c5877bd360 | 222 | #else |
| fahadmirza | 0:a0c5877bd360 | 223 | HAL_PWREx_DisableFastWakeUp( ); |
| fahadmirza | 0:a0c5877bd360 | 224 | #endif |
| fahadmirza | 0:a0c5877bd360 | 225 | } |
| fahadmirza | 0:a0c5877bd360 | 226 | |
| fahadmirza | 0:a0c5877bd360 | 227 | |
| fahadmirza | 0:a0c5877bd360 | 228 | #ifdef USE_FULL_ASSERT |
| fahadmirza | 0:a0c5877bd360 | 229 | |
| fahadmirza | 0:a0c5877bd360 | 230 | /****************************************************************************** |
| fahadmirza | 0:a0c5877bd360 | 231 | * @Brief : Reports the name of the source file and the source line number |
| fahadmirza | 0:a0c5877bd360 | 232 | * where the assert_param error has occurred. |
| fahadmirza | 0:a0c5877bd360 | 233 | * @Param : file: pointer to the source file name |
| fahadmirza | 0:a0c5877bd360 | 234 | * line: assert_param error line source number |
| fahadmirza | 0:a0c5877bd360 | 235 | * @Retval: None |
| fahadmirza | 0:a0c5877bd360 | 236 | ******************************************************************************/ |
| fahadmirza | 0:a0c5877bd360 | 237 | void assert_failed(uint8_t* file, uint32_t line) |
| fahadmirza | 0:a0c5877bd360 | 238 | { |
| fahadmirza | 0:a0c5877bd360 | 239 | /* User can add his own implementation to report the file name and line number, |
| fahadmirza | 0:a0c5877bd360 | 240 | ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
| fahadmirza | 0:a0c5877bd360 | 241 | } |
| fahadmirza | 0:a0c5877bd360 | 242 | |
| fahadmirza | 0:a0c5877bd360 | 243 | #endif |
| fahadmirza | 0:a0c5877bd360 | 244 | |
| fahadmirza | 0:a0c5877bd360 | 245 | #endif /* MAIN_H_ */ |
| fahadmirza | 0:a0c5877bd360 | 246 |