f303_h_p1 1

Dependencies:   mbed

Committer:
caa45040
Date:
Fri May 06 14:22:30 2022 +0000
Revision:
26:a047b389adfd
Parent:
12:6016c36a7b66
i2c_slave_HC_SR04_010_BIN re

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caa45040 12:6016c36a7b66 1 /* USER CODE BEGIN Header */
caa45040 12:6016c36a7b66 2 /**
caa45040 12:6016c36a7b66 3 ******************************************************************************
caa45040 12:6016c36a7b66 4 * @file : main.c
caa45040 12:6016c36a7b66 5 * @brief : Main program body
caa45040 12:6016c36a7b66 6 ******************************************************************************
caa45040 12:6016c36a7b66 7 * @attention
caa45040 12:6016c36a7b66 8 *
caa45040 12:6016c36a7b66 9 * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
caa45040 12:6016c36a7b66 10 * All rights reserved.</center></h2>
caa45040 12:6016c36a7b66 11 *
caa45040 12:6016c36a7b66 12 * This software component is licensed by ST under BSD 3-Clause license,
caa45040 12:6016c36a7b66 13 * the "License"; You may not use this file except in compliance with the
caa45040 12:6016c36a7b66 14 * License. You may obtain a copy of the License at:
caa45040 12:6016c36a7b66 15 * opensource.org/licenses/BSD-3-Clause
caa45040 12:6016c36a7b66 16 *
caa45040 12:6016c36a7b66 17 ******************************************************************************
caa45040 12:6016c36a7b66 18 */
caa45040 12:6016c36a7b66 19 /* USER CODE END Header */
caa45040 12:6016c36a7b66 20 /* Includes ------------------------------------------------------------------*/
caa45040 12:6016c36a7b66 21 #include "main.h"
caa45040 12:6016c36a7b66 22
caa45040 12:6016c36a7b66 23 /* Private includes ----------------------------------------------------------*/
caa45040 12:6016c36a7b66 24 /* USER CODE BEGIN Includes */
caa45040 12:6016c36a7b66 25
caa45040 12:6016c36a7b66 26 /* USER CODE END Includes */
caa45040 12:6016c36a7b66 27
caa45040 12:6016c36a7b66 28 /* Private typedef -----------------------------------------------------------*/
caa45040 12:6016c36a7b66 29 /* USER CODE BEGIN PTD */
caa45040 12:6016c36a7b66 30
caa45040 12:6016c36a7b66 31 /* USER CODE END PTD */
caa45040 12:6016c36a7b66 32
caa45040 12:6016c36a7b66 33 /* Private define ------------------------------------------------------------*/
caa45040 12:6016c36a7b66 34 /* USER CODE BEGIN PD */
caa45040 12:6016c36a7b66 35 /* USER CODE END PD */
caa45040 12:6016c36a7b66 36
caa45040 12:6016c36a7b66 37 /* Private macro -------------------------------------------------------------*/
caa45040 12:6016c36a7b66 38 /* USER CODE BEGIN PM */
caa45040 12:6016c36a7b66 39
caa45040 12:6016c36a7b66 40 /* USER CODE END PM */
caa45040 12:6016c36a7b66 41
caa45040 12:6016c36a7b66 42 /* Private variables ---------------------------------------------------------*/
caa45040 12:6016c36a7b66 43 ADC_HandleTypeDef hadc1;
caa45040 12:6016c36a7b66 44
caa45040 12:6016c36a7b66 45 /* USER CODE BEGIN PV */
caa45040 12:6016c36a7b66 46
caa45040 12:6016c36a7b66 47 /* USER CODE END PV */
caa45040 12:6016c36a7b66 48
caa45040 12:6016c36a7b66 49 /* Private function prototypes -----------------------------------------------*/
caa45040 12:6016c36a7b66 50 void SystemClock_Config(void);
caa45040 12:6016c36a7b66 51 static void MX_GPIO_Init(void);
caa45040 12:6016c36a7b66 52 static void MX_ADC1_Init(void);
caa45040 12:6016c36a7b66 53 /* USER CODE BEGIN PFP */
caa45040 12:6016c36a7b66 54
caa45040 12:6016c36a7b66 55 /* USER CODE END PFP */
caa45040 12:6016c36a7b66 56
caa45040 12:6016c36a7b66 57 /* Private user code ---------------------------------------------------------*/
caa45040 12:6016c36a7b66 58 /* USER CODE BEGIN 0 */
caa45040 12:6016c36a7b66 59
caa45040 12:6016c36a7b66 60
caa45040 12:6016c36a7b66 61
caa45040 12:6016c36a7b66 62 #define swdclk GPIO_PIN_12 //6ピン
caa45040 12:6016c36a7b66 63 #define swdio GPIO_PIN_11 //5ピン
caa45040 12:6016c36a7b66 64 #define en GPIO_PIN_0 //4ピン
caa45040 12:6016c36a7b66 65
caa45040 12:6016c36a7b66 66 #define DW(AAA,BBB) HAL_GPIO_WritePin(GPIOA,AAA,BBB)
caa45040 12:6016c36a7b66 67
caa45040 12:6016c36a7b66 68 GPIO_PinState bi1[]={GPIO_PIN_RESET,GPIO_PIN_SET};
caa45040 12:6016c36a7b66 69
caa45040 12:6016c36a7b66 70 //1文字送信
caa45040 12:6016c36a7b66 71 void seg1(char v,int rs)
caa45040 12:6016c36a7b66 72 {
caa45040 12:6016c36a7b66 73 for(int jj=0;jj<8;jj++){
caa45040 12:6016c36a7b66 74 if( (v<<jj) & 0x80 ){
caa45040 12:6016c36a7b66 75 DW(swdio,GPIO_PIN_SET); //ビットが1
caa45040 12:6016c36a7b66 76 } else {
caa45040 12:6016c36a7b66 77 DW(swdio,GPIO_PIN_RESET); //ビットが0
caa45040 12:6016c36a7b66 78 }//endif
caa45040 12:6016c36a7b66 79 DW(swdclk,GPIO_PIN_SET);DW(swdclk,GPIO_PIN_RESET); //clk
caa45040 12:6016c36a7b66 80 }//for
caa45040 12:6016c36a7b66 81 DW(swdio, bi1[rs] );
caa45040 12:6016c36a7b66 82 DW(en,GPIO_PIN_SET); HAL_Delay(1); //ビットが1
caa45040 12:6016c36a7b66 83 DW(en,GPIO_PIN_RESET); //ビットが0
caa45040 12:6016c36a7b66 84 }//seg1
caa45040 12:6016c36a7b66 85
caa45040 12:6016c36a7b66 86 //文字列の表示 nana_seg
caa45040 12:6016c36a7b66 87 int ns_printf(char *str1) {
caa45040 12:6016c36a7b66 88
caa45040 12:6016c36a7b66 89 //文字の中身がゼロか
caa45040 12:6016c36a7b66 90 while(*str1){
caa45040 12:6016c36a7b66 91
caa45040 12:6016c36a7b66 92 //一文字出力
caa45040 12:6016c36a7b66 93 seg1( *str1 ++ , 1 );
caa45040 12:6016c36a7b66 94
caa45040 12:6016c36a7b66 95 } //while
caa45040 12:6016c36a7b66 96
caa45040 12:6016c36a7b66 97 //戻り値
caa45040 12:6016c36a7b66 98 return(0);
caa45040 12:6016c36a7b66 99 }//ns_printf
caa45040 12:6016c36a7b66 100
caa45040 12:6016c36a7b66 101 //液晶初期化配列
caa45040 12:6016c36a7b66 102 int lcd_int[]={
caa45040 12:6016c36a7b66 103 0x30,0x30,0x30,0x38,0x08,0x01,0x06,0x08+0x04
caa45040 12:6016c36a7b66 104 };//lcd_init
caa45040 12:6016c36a7b66 105
caa45040 12:6016c36a7b66 106
caa45040 12:6016c36a7b66 107
caa45040 12:6016c36a7b66 108 /* USER CODE END 0 */
caa45040 12:6016c36a7b66 109
caa45040 12:6016c36a7b66 110 /**
caa45040 12:6016c36a7b66 111 * @brief The application entry point.
caa45040 12:6016c36a7b66 112 * @retval int
caa45040 12:6016c36a7b66 113 */
caa45040 12:6016c36a7b66 114 int main(void)
caa45040 12:6016c36a7b66 115 {
caa45040 12:6016c36a7b66 116 /* USER CODE BEGIN 1 */
caa45040 12:6016c36a7b66 117
caa45040 12:6016c36a7b66 118 /* USER CODE END 1 */
caa45040 12:6016c36a7b66 119
caa45040 12:6016c36a7b66 120 /* MCU Configuration--------------------------------------------------------*/
caa45040 12:6016c36a7b66 121
caa45040 12:6016c36a7b66 122 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
caa45040 12:6016c36a7b66 123 HAL_Init();
caa45040 12:6016c36a7b66 124
caa45040 12:6016c36a7b66 125 /* USER CODE BEGIN Init */
caa45040 12:6016c36a7b66 126
caa45040 12:6016c36a7b66 127 /* USER CODE END Init */
caa45040 12:6016c36a7b66 128
caa45040 12:6016c36a7b66 129 /* Configure the system clock */
caa45040 12:6016c36a7b66 130 SystemClock_Config();
caa45040 12:6016c36a7b66 131
caa45040 12:6016c36a7b66 132 /* USER CODE BEGIN SysInit */
caa45040 12:6016c36a7b66 133
caa45040 12:6016c36a7b66 134 /* USER CODE END SysInit */
caa45040 12:6016c36a7b66 135
caa45040 12:6016c36a7b66 136 /* Initialize all configured peripherals */
caa45040 12:6016c36a7b66 137 MX_GPIO_Init();
caa45040 12:6016c36a7b66 138 MX_ADC1_Init();
caa45040 12:6016c36a7b66 139 /* USER CODE BEGIN 2 */
caa45040 12:6016c36a7b66 140
caa45040 12:6016c36a7b66 141
caa45040 12:6016c36a7b66 142
caa45040 12:6016c36a7b66 143 //GPIOの初期化
caa45040 12:6016c36a7b66 144 DW(en,GPIO_PIN_RESET); //ビットが0
caa45040 12:6016c36a7b66 145 DW(swdclk,GPIO_PIN_RESET); //ビットが0
caa45040 12:6016c36a7b66 146
caa45040 12:6016c36a7b66 147 //液晶の初期化
caa45040 12:6016c36a7b66 148 for(int ii=0;ii<8;ii++){
caa45040 12:6016c36a7b66 149 seg1( lcd_int[ii] , 0);HAL_Delay(2);
caa45040 12:6016c36a7b66 150 }//for
caa45040 12:6016c36a7b66 151
caa45040 12:6016c36a7b66 152 //画面クリア
caa45040 12:6016c36a7b66 153 seg1( 0x01 , 0 );
caa45040 12:6016c36a7b66 154 HAL_Delay(1000);
caa45040 12:6016c36a7b66 155
caa45040 12:6016c36a7b66 156 seg1( 0x80+0x00 , 0 ); //1ライン目にカーソルを移動
caa45040 12:6016c36a7b66 157 ns_printf("Hello World !");HAL_Delay(500); //debug
caa45040 12:6016c36a7b66 158
caa45040 12:6016c36a7b66 159
caa45040 12:6016c36a7b66 160
caa45040 12:6016c36a7b66 161
caa45040 12:6016c36a7b66 162 /* USER CODE END 2 */
caa45040 12:6016c36a7b66 163
caa45040 12:6016c36a7b66 164 /* Infinite loop */
caa45040 12:6016c36a7b66 165 /* USER CODE BEGIN WHILE */
caa45040 12:6016c36a7b66 166 while (1)
caa45040 12:6016c36a7b66 167 {
caa45040 12:6016c36a7b66 168 /* USER CODE END WHILE */
caa45040 12:6016c36a7b66 169
caa45040 12:6016c36a7b66 170
caa45040 12:6016c36a7b66 171
caa45040 12:6016c36a7b66 172
caa45040 12:6016c36a7b66 173 /* USER CODE BEGIN 3 */
caa45040 12:6016c36a7b66 174 }
caa45040 12:6016c36a7b66 175 /* USER CODE END 3 */
caa45040 12:6016c36a7b66 176 }
caa45040 12:6016c36a7b66 177
caa45040 12:6016c36a7b66 178 /**
caa45040 12:6016c36a7b66 179 * @brief System Clock Configuration
caa45040 12:6016c36a7b66 180 * @retval None
caa45040 12:6016c36a7b66 181 */
caa45040 12:6016c36a7b66 182 void SystemClock_Config(void)
caa45040 12:6016c36a7b66 183 {
caa45040 12:6016c36a7b66 184 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
caa45040 12:6016c36a7b66 185 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
caa45040 12:6016c36a7b66 186 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
caa45040 12:6016c36a7b66 187
caa45040 12:6016c36a7b66 188 /** Configure the main internal regulator output voltage
caa45040 12:6016c36a7b66 189 */
caa45040 12:6016c36a7b66 190 HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
caa45040 12:6016c36a7b66 191 /** Initializes the RCC Oscillators according to the specified parameters
caa45040 12:6016c36a7b66 192 * in the RCC_OscInitTypeDef structure.
caa45040 12:6016c36a7b66 193 */
caa45040 12:6016c36a7b66 194 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
caa45040 12:6016c36a7b66 195 RCC_OscInitStruct.HSIState = RCC_HSI_ON;
caa45040 12:6016c36a7b66 196 RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
caa45040 12:6016c36a7b66 197 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
caa45040 12:6016c36a7b66 198 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
caa45040 12:6016c36a7b66 199 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
caa45040 12:6016c36a7b66 200 {
caa45040 12:6016c36a7b66 201 Error_Handler();
caa45040 12:6016c36a7b66 202 }
caa45040 12:6016c36a7b66 203 /** Initializes the CPU, AHB and APB buses clocks
caa45040 12:6016c36a7b66 204 */
caa45040 12:6016c36a7b66 205 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
caa45040 12:6016c36a7b66 206 |RCC_CLOCKTYPE_PCLK1;
caa45040 12:6016c36a7b66 207 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
caa45040 12:6016c36a7b66 208 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
caa45040 12:6016c36a7b66 209 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
caa45040 12:6016c36a7b66 210
caa45040 12:6016c36a7b66 211 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
caa45040 12:6016c36a7b66 212 {
caa45040 12:6016c36a7b66 213 Error_Handler();
caa45040 12:6016c36a7b66 214 }
caa45040 12:6016c36a7b66 215 /** Initializes the peripherals clocks
caa45040 12:6016c36a7b66 216 */
caa45040 12:6016c36a7b66 217 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
caa45040 12:6016c36a7b66 218 PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
caa45040 12:6016c36a7b66 219 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
caa45040 12:6016c36a7b66 220 {
caa45040 12:6016c36a7b66 221 Error_Handler();
caa45040 12:6016c36a7b66 222 }
caa45040 12:6016c36a7b66 223 }
caa45040 12:6016c36a7b66 224
caa45040 12:6016c36a7b66 225 /**
caa45040 12:6016c36a7b66 226 * @brief ADC1 Initialization Function
caa45040 12:6016c36a7b66 227 * @param None
caa45040 12:6016c36a7b66 228 * @retval None
caa45040 12:6016c36a7b66 229 */
caa45040 12:6016c36a7b66 230 static void MX_ADC1_Init(void)
caa45040 12:6016c36a7b66 231 {
caa45040 12:6016c36a7b66 232
caa45040 12:6016c36a7b66 233 /* USER CODE BEGIN ADC1_Init 0 */
caa45040 12:6016c36a7b66 234
caa45040 12:6016c36a7b66 235 /* USER CODE END ADC1_Init 0 */
caa45040 12:6016c36a7b66 236
caa45040 12:6016c36a7b66 237 ADC_ChannelConfTypeDef sConfig = {0};
caa45040 12:6016c36a7b66 238
caa45040 12:6016c36a7b66 239 /* USER CODE BEGIN ADC1_Init 1 */
caa45040 12:6016c36a7b66 240
caa45040 12:6016c36a7b66 241 /* USER CODE END ADC1_Init 1 */
caa45040 12:6016c36a7b66 242 /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
caa45040 12:6016c36a7b66 243 */
caa45040 12:6016c36a7b66 244 hadc1.Instance = ADC1;
caa45040 12:6016c36a7b66 245 hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
caa45040 12:6016c36a7b66 246 hadc1.Init.Resolution = ADC_RESOLUTION_12B;
caa45040 12:6016c36a7b66 247 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
caa45040 12:6016c36a7b66 248 hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
caa45040 12:6016c36a7b66 249 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
caa45040 12:6016c36a7b66 250 hadc1.Init.LowPowerAutoWait = DISABLE;
caa45040 12:6016c36a7b66 251 hadc1.Init.LowPowerAutoPowerOff = DISABLE;
caa45040 12:6016c36a7b66 252 hadc1.Init.ContinuousConvMode = DISABLE;
caa45040 12:6016c36a7b66 253 hadc1.Init.NbrOfConversion = 1;
caa45040 12:6016c36a7b66 254 hadc1.Init.DiscontinuousConvMode = DISABLE;
caa45040 12:6016c36a7b66 255 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
caa45040 12:6016c36a7b66 256 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
caa45040 12:6016c36a7b66 257 hadc1.Init.DMAContinuousRequests = DISABLE;
caa45040 12:6016c36a7b66 258 hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
caa45040 12:6016c36a7b66 259 hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_1CYCLE_5;
caa45040 12:6016c36a7b66 260 hadc1.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_1CYCLE_5;
caa45040 12:6016c36a7b66 261 hadc1.Init.OversamplingMode = DISABLE;
caa45040 12:6016c36a7b66 262 hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;
caa45040 12:6016c36a7b66 263 if (HAL_ADC_Init(&hadc1) != HAL_OK)
caa45040 12:6016c36a7b66 264 {
caa45040 12:6016c36a7b66 265 Error_Handler();
caa45040 12:6016c36a7b66 266 }
caa45040 12:6016c36a7b66 267 /** Configure Regular Channel
caa45040 12:6016c36a7b66 268 */
caa45040 12:6016c36a7b66 269 sConfig.Channel = ADC_CHANNEL_11;
caa45040 12:6016c36a7b66 270 sConfig.Rank = ADC_REGULAR_RANK_1;
caa45040 12:6016c36a7b66 271 sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1;
caa45040 12:6016c36a7b66 272 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
caa45040 12:6016c36a7b66 273 {
caa45040 12:6016c36a7b66 274 Error_Handler();
caa45040 12:6016c36a7b66 275 }
caa45040 12:6016c36a7b66 276 /* USER CODE BEGIN ADC1_Init 2 */
caa45040 12:6016c36a7b66 277
caa45040 12:6016c36a7b66 278 /* USER CODE END ADC1_Init 2 */
caa45040 12:6016c36a7b66 279
caa45040 12:6016c36a7b66 280 }
caa45040 12:6016c36a7b66 281
caa45040 12:6016c36a7b66 282 /**
caa45040 12:6016c36a7b66 283 * @brief GPIO Initialization Function
caa45040 12:6016c36a7b66 284 * @param None
caa45040 12:6016c36a7b66 285 * @retval None
caa45040 12:6016c36a7b66 286 */
caa45040 12:6016c36a7b66 287 static void MX_GPIO_Init(void)
caa45040 12:6016c36a7b66 288 {
caa45040 12:6016c36a7b66 289 GPIO_InitTypeDef GPIO_InitStruct = {0};
caa45040 12:6016c36a7b66 290
caa45040 12:6016c36a7b66 291 /* GPIO Ports Clock Enable */
caa45040 12:6016c36a7b66 292 __HAL_RCC_GPIOB_CLK_ENABLE();
caa45040 12:6016c36a7b66 293 __HAL_RCC_GPIOA_CLK_ENABLE();
caa45040 12:6016c36a7b66 294
caa45040 12:6016c36a7b66 295 /*Configure GPIO pin Output Level */
caa45040 12:6016c36a7b66 296 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_RESET);
caa45040 12:6016c36a7b66 297
caa45040 12:6016c36a7b66 298 /*Configure GPIO pins : PA0 PA11 PA12 */
caa45040 12:6016c36a7b66 299 GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_11|GPIO_PIN_12;
caa45040 12:6016c36a7b66 300 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
caa45040 12:6016c36a7b66 301 GPIO_InitStruct.Pull = GPIO_NOPULL;
caa45040 12:6016c36a7b66 302 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
caa45040 12:6016c36a7b66 303 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
caa45040 12:6016c36a7b66 304
caa45040 12:6016c36a7b66 305 }
caa45040 12:6016c36a7b66 306
caa45040 12:6016c36a7b66 307 /* USER CODE BEGIN 4 */
caa45040 12:6016c36a7b66 308
caa45040 12:6016c36a7b66 309 /* USER CODE END 4 */
caa45040 12:6016c36a7b66 310
caa45040 12:6016c36a7b66 311 /**
caa45040 12:6016c36a7b66 312 * @brief This function is executed in case of error occurrence.
caa45040 12:6016c36a7b66 313 * @retval None
caa45040 12:6016c36a7b66 314 */
caa45040 12:6016c36a7b66 315 void Error_Handler(void)
caa45040 12:6016c36a7b66 316 {
caa45040 12:6016c36a7b66 317 /* USER CODE BEGIN Error_Handler_Debug */
caa45040 12:6016c36a7b66 318 /* User can add his own implementation to report the HAL error return state */
caa45040 12:6016c36a7b66 319 __disable_irq();
caa45040 12:6016c36a7b66 320 while (1)
caa45040 12:6016c36a7b66 321 {
caa45040 12:6016c36a7b66 322 }
caa45040 12:6016c36a7b66 323 /* USER CODE END Error_Handler_Debug */
caa45040 12:6016c36a7b66 324 }
caa45040 12:6016c36a7b66 325
caa45040 12:6016c36a7b66 326 #ifdef USE_FULL_ASSERT
caa45040 12:6016c36a7b66 327 /**
caa45040 12:6016c36a7b66 328 * @brief Reports the name of the source file and the source line number
caa45040 12:6016c36a7b66 329 * where the assert_param error has occurred.
caa45040 12:6016c36a7b66 330 * @param file: pointer to the source file name
caa45040 12:6016c36a7b66 331 * @param line: assert_param error line source number
caa45040 12:6016c36a7b66 332 * @retval None
caa45040 12:6016c36a7b66 333 */
caa45040 12:6016c36a7b66 334 void assert_failed(uint8_t *file, uint32_t line)
caa45040 12:6016c36a7b66 335 {
caa45040 12:6016c36a7b66 336 /* USER CODE BEGIN 6 */
caa45040 12:6016c36a7b66 337 /* User can add his own implementation to report the file name and line number,
caa45040 12:6016c36a7b66 338 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
caa45040 12:6016c36a7b66 339 /* USER CODE END 6 */
caa45040 12:6016c36a7b66 340 }
caa45040 12:6016c36a7b66 341 #endif /* USE_FULL_ASSERT */
caa45040 12:6016c36a7b66 342
caa45040 12:6016c36a7b66 343 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
caa45040 12:6016c36a7b66 344