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.cpp@3:a0ce23fb69d8, 2018-09-05 (annotated)
- Committer:
- geryyy
- Date:
- Wed Sep 05 17:31:20 2018 +0000
- Revision:
- 3:a0ce23fb69d8
- Parent:
- 2:7d25b12db2bc
author and date added
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| geryyy | 0:1df541c54e25 | 1 | #include "mbed.h" | 
| geryyy | 0:1df541c54e25 | 2 | #include "stm32f7xx_hal.h" | 
| geryyy | 0:1df541c54e25 | 3 | |
| geryyy | 3:a0ce23fb69d8 | 4 | /* author: Gerald Ebmer | 
| geryyy | 3:a0ce23fb69d8 | 5 | * date: 26.06.2018 | 
| geryyy | 3:a0ce23fb69d8 | 6 | */ | 
| geryyy | 3:a0ce23fb69d8 | 7 | |
| geryyy | 2:7d25b12db2bc | 8 | DigitalOut myled(LED1); | 
| geryyy | 2:7d25b12db2bc | 9 | uint16_t uhPrescalerValue; | 
| geryyy | 2:7d25b12db2bc | 10 | |
| geryyy | 2:7d25b12db2bc | 11 | uint16_t TPeriod; | 
| geryyy | 2:7d25b12db2bc | 12 | uint16_t TPulse; | 
| geryyy | 2:7d25b12db2bc | 13 | uint16_t TPulseframe; | 
| geryyy | 0:1df541c54e25 | 14 | |
| geryyy | 2:7d25b12db2bc | 15 | TIM_HandleTypeDef htim3; | 
| geryyy | 2:7d25b12db2bc | 16 | TIM_HandleTypeDef htim4; | 
| geryyy | 2:7d25b12db2bc | 17 | static void MX_GPIO_Init(void); | 
| geryyy | 2:7d25b12db2bc | 18 | static void MX_TIM3_Init(void); | 
| geryyy | 2:7d25b12db2bc | 19 | static void MX_TIM4_Init(void); | 
| geryyy | 2:7d25b12db2bc | 20 | |
| geryyy | 2:7d25b12db2bc | 21 | void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); | 
| geryyy | 0:1df541c54e25 | 22 | |
| geryyy | 2:7d25b12db2bc | 23 | void _Error_Handler(char *file, int line); | 
| geryyy | 0:1df541c54e25 | 24 | |
| geryyy | 0:1df541c54e25 | 25 | int main() { | 
| geryyy | 2:7d25b12db2bc | 26 | uint32_t TimerCLK = 10000000; | 
| geryyy | 2:7d25b12db2bc | 27 | uhPrescalerValue = (uint32_t)(((SystemCoreClock/ 2) / TimerCLK) - 1); | 
| geryyy | 0:1df541c54e25 | 28 | |
| geryyy | 2:7d25b12db2bc | 29 | /* pulse parameter | 
| geryyy | 2:7d25b12db2bc | 30 | * __ __ | 
| geryyy | 2:7d25b12db2bc | 31 | * TIM3 Ch1 (PB4): | |_______________________| | 
| geryyy | 2:7d25b12db2bc | 32 | * : : __ : | 
| geryyy | 2:7d25b12db2bc | 33 | * TIM4 Ch1 (PB6): :__:___________| |________:__ | 
| geryyy | 3:a0ce23fb69d8 | 34 | * :TPulse_s : : | 
| geryyy | 3:a0ce23fb69d8 | 35 | * : TPulseframe_s : | 
| geryyy | 2:7d25b12db2bc | 36 | * : TPeriod_s : | 
| geryyy | 2:7d25b12db2bc | 37 | */ | 
| geryyy | 2:7d25b12db2bc | 38 | |
| geryyy | 2:7d25b12db2bc | 39 | float Tclk_s = 1/ (float)TimerCLK; | 
| geryyy | 2:7d25b12db2bc | 40 | float TPulse_s = 0.000001; /* Tclk_s .. TPeriod_s 0.1 e.g. 1us */ | 
| geryyy | 3:a0ce23fb69d8 | 41 | float TPulseframe_s = 0.0005; /* TPulse_s .. TPeriod_s 0.1 e.g. 10us */ | 
| geryyy | 3:a0ce23fb69d8 | 42 | float TPeriod_s = 0.001; /* 0.0001 .. 0.0065 s */ | 
| geryyy | 2:7d25b12db2bc | 43 | |
| geryyy | 2:7d25b12db2bc | 44 | /* timer register values */ | 
| geryyy | 2:7d25b12db2bc | 45 | TPulse = (uint16_t)(TPulse_s / Tclk_s) + 1; | 
| geryyy | 2:7d25b12db2bc | 46 | TPulseframe = (uint16_t)(TPulseframe_s / Tclk_s + 1); | 
| geryyy | 2:7d25b12db2bc | 47 | TPeriod = (uint16_t)(TPeriod_s / Tclk_s) + 1; | 
| geryyy | 2:7d25b12db2bc | 48 | |
| geryyy | 2:7d25b12db2bc | 49 | printf("HV Pulsgenerator V0.1\nGerald Ebmer 2018\n\n"); | 
| geryyy | 2:7d25b12db2bc | 50 | printf("TPulse: %d\nTPulseframe: %d\nTPeriod: %d\n\n",TPulse, TPulseframe, TPeriod); | 
| geryyy | 2:7d25b12db2bc | 51 | |
| geryyy | 0:1df541c54e25 | 52 | |
| geryyy | 2:7d25b12db2bc | 53 | |
| geryyy | 2:7d25b12db2bc | 54 | |
| geryyy | 2:7d25b12db2bc | 55 | MX_GPIO_Init(); | 
| geryyy | 2:7d25b12db2bc | 56 | MX_TIM3_Init(); | 
| geryyy | 2:7d25b12db2bc | 57 | MX_TIM4_Init(); | 
| geryyy | 2:7d25b12db2bc | 58 | HAL_TIM_Base_MspInit(&htim3); | 
| geryyy | 2:7d25b12db2bc | 59 | HAL_TIM_Base_MspInit(&htim4); | 
| geryyy | 2:7d25b12db2bc | 60 | |
| geryyy | 2:7d25b12db2bc | 61 | HAL_TIM_Base_Start(&htim4); | 
| geryyy | 2:7d25b12db2bc | 62 | HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); | 
| geryyy | 2:7d25b12db2bc | 63 | HAL_TIM_OnePulse_Start(&htim4, TIM_CHANNEL_1); | 
| geryyy | 2:7d25b12db2bc | 64 | // Master | 
| geryyy | 2:7d25b12db2bc | 65 | HAL_TIM_Base_Start(&htim3); | 
| geryyy | 2:7d25b12db2bc | 66 | HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); | 
| geryyy | 2:7d25b12db2bc | 67 | /* TIM3 Channel 1: PB4 | 
| geryyy | 2:7d25b12db2bc | 68 | TIM4 Channel 1: PB6 | 
| geryyy | 2:7d25b12db2bc | 69 | */ | 
| geryyy | 0:1df541c54e25 | 70 | while(1) { | 
| geryyy | 0:1df541c54e25 | 71 | myled = !myled; | 
| geryyy | 0:1df541c54e25 | 72 | wait(1); | 
| geryyy | 0:1df541c54e25 | 73 | } | 
| geryyy | 0:1df541c54e25 | 74 | } | 
| geryyy | 0:1df541c54e25 | 75 | |
| geryyy | 2:7d25b12db2bc | 76 | /* TIM3 init function */ | 
| geryyy | 2:7d25b12db2bc | 77 | static void MX_TIM3_Init(void) | 
| geryyy | 0:1df541c54e25 | 78 | { | 
| geryyy | 2:7d25b12db2bc | 79 | |
| geryyy | 2:7d25b12db2bc | 80 | TIM_ClockConfigTypeDef sClockSourceConfig; | 
| geryyy | 2:7d25b12db2bc | 81 | TIM_MasterConfigTypeDef sMasterConfig; | 
| geryyy | 2:7d25b12db2bc | 82 | TIM_OC_InitTypeDef sConfigOC; | 
| geryyy | 2:7d25b12db2bc | 83 | |
| geryyy | 2:7d25b12db2bc | 84 | htim3.Instance = TIM3; | 
| geryyy | 2:7d25b12db2bc | 85 | htim3.Init.Prescaler = uhPrescalerValue; | 
| geryyy | 2:7d25b12db2bc | 86 | htim3.Init.CounterMode = TIM_COUNTERMODE_UP; | 
| geryyy | 2:7d25b12db2bc | 87 | htim3.Init.Period = TPeriod; | 
| geryyy | 2:7d25b12db2bc | 88 | htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | 
| geryyy | 2:7d25b12db2bc | 89 | htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 90 | if (HAL_TIM_Base_Init(&htim3) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 91 | { | 
| geryyy | 2:7d25b12db2bc | 92 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 93 | } | 
| geryyy | 2:7d25b12db2bc | 94 | |
| geryyy | 2:7d25b12db2bc | 95 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | 
| geryyy | 2:7d25b12db2bc | 96 | if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 97 | { | 
| geryyy | 2:7d25b12db2bc | 98 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 99 | } | 
| geryyy | 2:7d25b12db2bc | 100 | |
| geryyy | 2:7d25b12db2bc | 101 | if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 102 | { | 
| geryyy | 2:7d25b12db2bc | 103 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 104 | } | 
| geryyy | 2:7d25b12db2bc | 105 | |
| geryyy | 2:7d25b12db2bc | 106 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; | 
| geryyy | 2:7d25b12db2bc | 107 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 108 | if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 109 | { | 
| geryyy | 2:7d25b12db2bc | 110 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 111 | } | 
| geryyy | 0:1df541c54e25 | 112 | |
| geryyy | 2:7d25b12db2bc | 113 | sConfigOC.OCMode = TIM_OCMODE_PWM1; | 
| geryyy | 2:7d25b12db2bc | 114 | sConfigOC.Pulse = TPulse; | 
| geryyy | 2:7d25b12db2bc | 115 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; | 
| geryyy | 2:7d25b12db2bc | 116 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 117 | if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 118 | { | 
| geryyy | 2:7d25b12db2bc | 119 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 120 | } | 
| geryyy | 2:7d25b12db2bc | 121 | |
| geryyy | 2:7d25b12db2bc | 122 | HAL_TIM_MspPostInit(&htim3); | 
| geryyy | 2:7d25b12db2bc | 123 | |
| geryyy | 2:7d25b12db2bc | 124 | } | 
| geryyy | 2:7d25b12db2bc | 125 | |
| geryyy | 2:7d25b12db2bc | 126 | /* TIM4 init function */ | 
| geryyy | 2:7d25b12db2bc | 127 | static void MX_TIM4_Init(void) | 
| geryyy | 2:7d25b12db2bc | 128 | { | 
| geryyy | 2:7d25b12db2bc | 129 | |
| geryyy | 2:7d25b12db2bc | 130 | TIM_ClockConfigTypeDef sClockSourceConfig; | 
| geryyy | 2:7d25b12db2bc | 131 | TIM_SlaveConfigTypeDef sSlaveConfig; | 
| geryyy | 2:7d25b12db2bc | 132 | TIM_MasterConfigTypeDef sMasterConfig; | 
| geryyy | 2:7d25b12db2bc | 133 | TIM_OC_InitTypeDef sConfigOC; | 
| geryyy | 2:7d25b12db2bc | 134 | |
| geryyy | 2:7d25b12db2bc | 135 | htim4.Instance = TIM4; | 
| geryyy | 2:7d25b12db2bc | 136 | htim4.Init.Prescaler = uhPrescalerValue; | 
| geryyy | 2:7d25b12db2bc | 137 | htim4.Init.CounterMode = TIM_COUNTERMODE_UP; | 
| geryyy | 2:7d25b12db2bc | 138 | htim4.Init.Period = TPulseframe; | 
| geryyy | 2:7d25b12db2bc | 139 | htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | 
| geryyy | 2:7d25b12db2bc | 140 | htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 141 | if (HAL_TIM_Base_Init(&htim4) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 142 | { | 
| geryyy | 2:7d25b12db2bc | 143 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 144 | } | 
| geryyy | 2:7d25b12db2bc | 145 | |
| geryyy | 2:7d25b12db2bc | 146 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | 
| geryyy | 2:7d25b12db2bc | 147 | if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 148 | { | 
| geryyy | 2:7d25b12db2bc | 149 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 150 | } | 
| geryyy | 2:7d25b12db2bc | 151 | |
| geryyy | 2:7d25b12db2bc | 152 | if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 153 | { | 
| geryyy | 2:7d25b12db2bc | 154 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 155 | } | 
| geryyy | 2:7d25b12db2bc | 156 | |
| geryyy | 2:7d25b12db2bc | 157 | if (HAL_TIM_OnePulse_Init(&htim4, TIM_OPMODE_SINGLE) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 158 | { | 
| geryyy | 2:7d25b12db2bc | 159 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 160 | } | 
| geryyy | 0:1df541c54e25 | 161 | |
| geryyy | 2:7d25b12db2bc | 162 | sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER; | 
| geryyy | 2:7d25b12db2bc | 163 | sSlaveConfig.InputTrigger = TIM_TS_ITR2; | 
| geryyy | 2:7d25b12db2bc | 164 | if (HAL_TIM_SlaveConfigSynchronization(&htim4, &sSlaveConfig) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 165 | { | 
| geryyy | 2:7d25b12db2bc | 166 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 167 | } | 
| geryyy | 2:7d25b12db2bc | 168 | |
| geryyy | 2:7d25b12db2bc | 169 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | 
| geryyy | 2:7d25b12db2bc | 170 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 171 | if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 172 | { | 
| geryyy | 2:7d25b12db2bc | 173 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 174 | } | 
| geryyy | 2:7d25b12db2bc | 175 | |
| geryyy | 2:7d25b12db2bc | 176 | sConfigOC.OCMode = TIM_OCMODE_PWM1; | 
| geryyy | 2:7d25b12db2bc | 177 | sConfigOC.Pulse = TPulseframe - TPulse; | 
| geryyy | 2:7d25b12db2bc | 178 | sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; | 
| geryyy | 2:7d25b12db2bc | 179 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | 
| geryyy | 2:7d25b12db2bc | 180 | if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | 
| geryyy | 2:7d25b12db2bc | 181 | { | 
| geryyy | 2:7d25b12db2bc | 182 | _Error_Handler(__FILE__, __LINE__); | 
| geryyy | 2:7d25b12db2bc | 183 | } | 
| geryyy | 2:7d25b12db2bc | 184 | |
| geryyy | 2:7d25b12db2bc | 185 | HAL_TIM_MspPostInit(&htim4); | 
| geryyy | 2:7d25b12db2bc | 186 | |
| geryyy | 2:7d25b12db2bc | 187 | } | 
| geryyy | 2:7d25b12db2bc | 188 | |
| geryyy | 2:7d25b12db2bc | 189 | /** Configure pins as | 
| geryyy | 2:7d25b12db2bc | 190 | * Analog | 
| geryyy | 2:7d25b12db2bc | 191 | * Input | 
| geryyy | 2:7d25b12db2bc | 192 | * Output | 
| geryyy | 2:7d25b12db2bc | 193 | * EVENT_OUT | 
| geryyy | 2:7d25b12db2bc | 194 | * EXTI | 
| geryyy | 2:7d25b12db2bc | 195 | */ | 
| geryyy | 2:7d25b12db2bc | 196 | static void MX_GPIO_Init(void) | 
| geryyy | 2:7d25b12db2bc | 197 | { | 
| geryyy | 2:7d25b12db2bc | 198 | /* GPIO Ports Clock Enable */ | 
| geryyy | 2:7d25b12db2bc | 199 | __HAL_RCC_GPIOH_CLK_ENABLE(); | 
| geryyy | 2:7d25b12db2bc | 200 | __HAL_RCC_GPIOB_CLK_ENABLE(); | 
| geryyy | 2:7d25b12db2bc | 201 | } | 
| geryyy | 2:7d25b12db2bc | 202 | |
| geryyy | 0:1df541c54e25 | 203 | |
| geryyy | 2:7d25b12db2bc | 204 | void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) | 
| geryyy | 2:7d25b12db2bc | 205 | { | 
| geryyy | 2:7d25b12db2bc | 206 | |
| geryyy | 2:7d25b12db2bc | 207 | if(htim_base->Instance==TIM3) | 
| geryyy | 2:7d25b12db2bc | 208 | { | 
| geryyy | 2:7d25b12db2bc | 209 | /* Peripheral clock enable */ | 
| geryyy | 2:7d25b12db2bc | 210 | __HAL_RCC_TIM3_CLK_ENABLE(); | 
| geryyy | 2:7d25b12db2bc | 211 | } | 
| geryyy | 2:7d25b12db2bc | 212 | else if(htim_base->Instance==TIM4) | 
| geryyy | 2:7d25b12db2bc | 213 | { | 
| geryyy | 2:7d25b12db2bc | 214 | /* Peripheral clock enable */ | 
| geryyy | 2:7d25b12db2bc | 215 | __HAL_RCC_TIM4_CLK_ENABLE(); | 
| geryyy | 2:7d25b12db2bc | 216 | } | 
| geryyy | 2:7d25b12db2bc | 217 | } | 
| geryyy | 0:1df541c54e25 | 218 | |
| geryyy | 2:7d25b12db2bc | 219 | void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) | 
| geryyy | 2:7d25b12db2bc | 220 | { | 
| geryyy | 2:7d25b12db2bc | 221 | GPIO_InitTypeDef GPIO_InitStruct; | 
| geryyy | 2:7d25b12db2bc | 222 | if(htim->Instance==TIM3) | 
| geryyy | 2:7d25b12db2bc | 223 | { | 
| geryyy | 2:7d25b12db2bc | 224 | /**TIM3 GPIO Configuration | 
| geryyy | 2:7d25b12db2bc | 225 | PB4 ------> TIM3_CH1 | 
| geryyy | 2:7d25b12db2bc | 226 | */ | 
| geryyy | 2:7d25b12db2bc | 227 | GPIO_InitStruct.Pin = GPIO_PIN_4; | 
| geryyy | 2:7d25b12db2bc | 228 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | 
| geryyy | 2:7d25b12db2bc | 229 | GPIO_InitStruct.Pull = GPIO_NOPULL; | 
| geryyy | 3:a0ce23fb69d8 | 230 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | 
| geryyy | 2:7d25b12db2bc | 231 | GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; | 
| geryyy | 2:7d25b12db2bc | 232 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); | 
| geryyy | 2:7d25b12db2bc | 233 | |
| geryyy | 2:7d25b12db2bc | 234 | } | 
| geryyy | 2:7d25b12db2bc | 235 | else if(htim->Instance==TIM4) | 
| geryyy | 2:7d25b12db2bc | 236 | { | 
| geryyy | 2:7d25b12db2bc | 237 | /**TIM4 GPIO Configuration | 
| geryyy | 2:7d25b12db2bc | 238 | PB6 ------> TIM4_CH1 | 
| geryyy | 2:7d25b12db2bc | 239 | */ | 
| geryyy | 2:7d25b12db2bc | 240 | GPIO_InitStruct.Pin = GPIO_PIN_6; | 
| geryyy | 2:7d25b12db2bc | 241 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | 
| geryyy | 2:7d25b12db2bc | 242 | GPIO_InitStruct.Pull = GPIO_NOPULL; | 
| geryyy | 3:a0ce23fb69d8 | 243 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | 
| geryyy | 2:7d25b12db2bc | 244 | GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; | 
| geryyy | 2:7d25b12db2bc | 245 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); | 
| geryyy | 2:7d25b12db2bc | 246 | } | 
| geryyy | 0:1df541c54e25 | 247 | } | 
| geryyy | 0:1df541c54e25 | 248 | |
| geryyy | 0:1df541c54e25 | 249 | |
| geryyy | 0:1df541c54e25 | 250 | /** | 
| geryyy | 0:1df541c54e25 | 251 | * @brief This function is executed in case of error occurrence. | 
| geryyy | 0:1df541c54e25 | 252 | * @param file: The file name as string. | 
| geryyy | 0:1df541c54e25 | 253 | * @param line: The line in file as a number. | 
| geryyy | 0:1df541c54e25 | 254 | * @retval None | 
| geryyy | 0:1df541c54e25 | 255 | */ | 
| geryyy | 2:7d25b12db2bc | 256 | void _Error_Handler(char *file, int line) | 
| geryyy | 0:1df541c54e25 | 257 | { | 
| geryyy | 0:1df541c54e25 | 258 | fprintf(stderr, "Error in file %s linenr %d!\n",file,line); | 
| geryyy | 0:1df541c54e25 | 259 | /* USER CODE BEGIN Error_Handler_Debug */ | 
| geryyy | 0:1df541c54e25 | 260 | /* User can add his own implementation to report the HAL error return state */ | 
| geryyy | 0:1df541c54e25 | 261 | while(1) | 
| geryyy | 0:1df541c54e25 | 262 | { | 
| geryyy | 0:1df541c54e25 | 263 | } | 
| geryyy | 0:1df541c54e25 | 264 | /* USER CODE END Error_Handler_Debug */ | 
| geryyy | 0:1df541c54e25 | 265 | } |