Subversion Repositories dashGPS

Rev

Rev 23 | Rev 25 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 23 Rev 24
Line 59... Line 59...
59
{
59
{
60
  uint8_t dev_addr;
60
  uint8_t dev_addr;
61
} interface_t;
61
} interface_t;
62
 
62
 
63
static int8_t
63
static int8_t
64
user_i2c_write (uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data, uint32_t len)
64
user_i2c_write (uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data,
-
 
65
                uint32_t len)
65
{
66
{
66
    HAL_StatusTypeDef st = HAL_I2C_Mem_Write(&hi2c2, i2c_addr<<1, reg_addr, 1, reg_data, len, 10000);
67
  HAL_StatusTypeDef st = HAL_I2C_Mem_Write (&hi2c2, i2c_addr << 1, reg_addr, 1,
-
 
68
                                            reg_data, len, 10000);
67
 
69
 
68
  return st != HAL_OK ?  BMP280_E_COMM_FAIL: BMP280_OK;
70
  return st != HAL_OK ? BMP280_E_COMM_FAIL : BMP280_OK;
69
 
71
 
70
}
72
}
71
static int8_t
73
static int8_t
72
user_i2c_read (uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data, uint32_t len)
74
user_i2c_read (uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data,
-
 
75
               uint32_t len)
73
{
76
{
74
  HAL_StatusTypeDef st = HAL_I2C_Mem_Read(&hi2c2, i2c_addr<<1, reg_addr, 1, reg_data, len, 10000);
77
  HAL_StatusTypeDef st = HAL_I2C_Mem_Read (&hi2c2, i2c_addr << 1, reg_addr, 1,
-
 
78
                                           reg_data, len, 10000);
75
 
79
 
76
  return st != HAL_OK ?  BMP280_E_COMM_FAIL: BMP280_OK;
80
  return st != HAL_OK ? BMP280_E_COMM_FAIL : BMP280_OK;
77
 
81
 
78
}
82
}
79
 
83
 
80
static void
84
static void
81
user_delay_ms (uint32_t ms, void *handle)
85
user_delay_ms (uint32_t ms, void *handle)
82
{
86
{
83
  HAL_Delay (ms);
87
  HAL_Delay (ms);
84
 
88
 
85
}
89
}
86
 
90
 
87
 
-
 
88
 
-
 
89
 
-
 
90
struct bmp280_dev bmp =
91
struct bmp280_dev bmp =
91
  {
92
  {
92
 
93
 
93
  .intf = BMP280_I2C_INTF, .read = user_i2c_read, .write = user_i2c_write,
94
  .intf = BMP280_I2C_INTF, .read = user_i2c_read, .write = user_i2c_write,
94
      .delay_ms = user_delay_ms,
95
      .delay_ms = user_delay_ms,
95
 
96
 
96
      /* Update interface pointer with the structure that contains both device address and file descriptor */
97
      /* Update interface pointer with the structure that contains both device address and file descriptor */
97
     .dev_id =  BMP280_I2C_ADDR_PRIM };
98
      .dev_id = BMP280_I2C_ADDR_PRIM };
98
 
99
 
99
int8_t rslt;
100
int8_t rslt;
100
struct bmp280_config conf;
101
struct bmp280_config conf;
101
 
102
 
102
 
-
 
103
/* USER CODE END PV */
103
/* USER CODE END PV */
104
 
104
 
105
/* Private function prototypes -----------------------------------------------*/
105
/* Private function prototypes -----------------------------------------------*/
-
 
106
void
106
void SystemClock_Config(void);
107
SystemClock_Config (void);
-
 
108
static void
107
static void MX_GPIO_Init(void);
109
MX_GPIO_Init (void);
-
 
110
static void
108
static void MX_SPI1_Init(void);
111
MX_SPI1_Init (void);
-
 
112
static void
109
static void MX_TIM4_Init(void);
113
MX_TIM4_Init (void);
-
 
114
static void
110
static void MX_USART1_UART_Init(void);
115
MX_USART1_UART_Init (void);
-
 
116
static void
111
static void MX_TIM3_Init(void);
117
MX_TIM3_Init (void);
-
 
118
static void
112
static void MX_I2C2_Init(void);
119
MX_I2C2_Init (void);
-
 
120
static void
113
static void MX_RTC_Init(void);
121
MX_RTC_Init (void);
114
/* USER CODE BEGIN PFP */
122
/* USER CODE BEGIN PFP */
115
 
123
 
116
/* USER CODE END PFP */
124
/* USER CODE END PFP */
117
 
125
 
118
/* Private user code ---------------------------------------------------------*/
126
/* Private user code ---------------------------------------------------------*/
119
/* USER CODE BEGIN 0 */
127
/* USER CODE BEGIN 0 */
120
 
128
 
-
 
129
uint32_t const TICKS_LOOP = 50; // 100mS per loop.
-
 
130
 
121
/* USER CODE END 0 */
131
/* USER CODE END 0 */
122
 
132
 
123
/**
133
/**
124
  * @brief  The application entry point.
134
 * @brief  The application entry point.
125
  * @retval int
135
 * @retval int
126
  */
136
 */
-
 
137
int
127
int main(void)
138
main (void)
128
{
139
{
129
  /* USER CODE BEGIN 1 */
140
  /* USER CODE BEGIN 1 */
130
 
141
 
131
  /* USER CODE END 1 */
142
  /* USER CODE END 1 */
132
 
143
 
133
  /* MCU Configuration--------------------------------------------------------*/
144
  /* MCU Configuration--------------------------------------------------------*/
134
 
145
 
135
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
146
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
136
  HAL_Init();
147
  HAL_Init ();
137
 
148
 
138
  /* USER CODE BEGIN Init */
149
  /* USER CODE BEGIN Init */
139
 
150
 
140
  /* USER CODE END Init */
151
  /* USER CODE END Init */
141
 
152
 
142
  /* Configure the system clock */
153
  /* Configure the system clock */
143
  SystemClock_Config();
154
  SystemClock_Config ();
144
 
155
 
145
  /* USER CODE BEGIN SysInit */
156
  /* USER CODE BEGIN SysInit */
146
 
157
 
147
  /* USER CODE END SysInit */
158
  /* USER CODE END SysInit */
148
 
159
 
149
  /* Initialize all configured peripherals */
160
  /* Initialize all configured peripherals */
150
  MX_GPIO_Init();
161
  MX_GPIO_Init ();
151
  MX_SPI1_Init();
162
  MX_SPI1_Init ();
152
  MX_TIM4_Init();
163
  MX_TIM4_Init ();
153
  MX_USART1_UART_Init();
164
  MX_USART1_UART_Init ();
154
  MX_TIM3_Init();
165
  MX_TIM3_Init ();
155
  MX_I2C2_Init();
166
  MX_I2C2_Init ();
156
  MX_RTC_Init();
167
  MX_RTC_Init ();
157
  MX_USB_DEVICE_Init();
168
  MX_USB_DEVICE_Init ();
158
  /* USER CODE BEGIN 2 */
169
  /* USER CODE BEGIN 2 */
159
 
170
 
160
  HAL_GPIO_WritePin ( USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_RESET);
171
  HAL_GPIO_WritePin ( USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_RESET);
161
  HAL_Delay (1000);
172
  HAL_Delay (1000);
162
  HAL_GPIO_WritePin ( USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_SET);
173
  HAL_GPIO_WritePin ( USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_SET);
163
 
174
 
164
  /* setup the USART control blocks */#
175
  /* setup the USART control blocks */
-
 
176
#
165
 
177
 
166
#if defined SERIAL_UART1
178
#if defined SERIAL_UART1
167
  init_usart_ctl (&uc1, huart1.Instance);
179
  init_usart_ctl (&uc1, huart1.Instance);
168
 
180
 
169
  EnableSerialRxInterrupt (&uc1);
181
  EnableSerialRxInterrupt (&uc1);
170
#endif
182
#endif
171
 
183
 
172
  /* Initialize the bmp280 */
184
  /* Initialize the bmp280 */
173
  rslt = bmp280_init(&bmp);
185
  rslt = bmp280_init (&bmp);
174
//  print_rslt(" bmp280_init status", rslt);
186
//  print_rslt(" bmp280_init status", rslt);
175
 
187
 
176
  /* Always read the current settings before writing, especially when
188
  /* Always read the current settings before writing, especially when
177
   * all the configuration is not modified
189
   * all the configuration is not modified
178
   */
190
   */
179
  rslt = bmp280_get_config(&conf, &bmp);
191
  rslt = bmp280_get_config (&conf, &bmp);
180
 // print_rslt(" bmp280_get_config status", rslt);
192
  // print_rslt(" bmp280_get_config status", rslt);
181
 
193
 
182
  /* configuring the temperature oversampling, filter coefficient and output data rate */
194
  /* configuring the temperature oversampling, filter coefficient and output data rate */
183
  /* Overwrite the desired settings */
195
  /* Overwrite the desired settings */
184
  conf.filter = BMP280_FILTER_COEFF_2;
196
  conf.filter = BMP280_FILTER_COEFF_2;
185
 
197
 
Line 189... Line 201...
189
  /* Pressure over sampling none (disabling pressure measurement) */
201
  /* Pressure over sampling none (disabling pressure measurement) */
190
  conf.os_pres = BMP280_OS_4X;
202
  conf.os_pres = BMP280_OS_4X;
191
 
203
 
192
  /* Setting the output data rate as 2HZ(500ms) */
204
  /* Setting the output data rate as 2HZ(500ms) */
193
  conf.odr = BMP280_ODR_500_MS;
205
  conf.odr = BMP280_ODR_500_MS;
194
  rslt = bmp280_set_config(&conf, &bmp);
206
  rslt = bmp280_set_config (&conf, &bmp);
195
  //print_rslt(" bmp280_set_config status", rslt);
207
  //print_rslt(" bmp280_set_config status", rslt);
196
 
208
 
197
  /* Always set the power mode after setting the configuration */
209
  /* Always set the power mode after setting the configuration */
198
  rslt = bmp280_set_power_mode(BMP280_NORMAL_MODE, &bmp);
210
  rslt = bmp280_set_power_mode (BMP280_NORMAL_MODE, &bmp);
199
  //print_rslt(" bmp280_set_power_mode status", rslt);
211
  //print_rslt(" bmp280_set_power_mode status", rslt);
200
 
212
 
-
 
213
  cc_init ();
201
 
214
 
-
 
215
  uint32_t timeNext = HAL_GetTick () + TICKS_LOOP;
202
 
216
 
203
  cc_init ();
-
 
204
  /* USER CODE END 2 */
217
  /* USER CODE END 2 */
205
 
218
 
206
  /* Infinite loop */
219
  /* Infinite loop */
207
  /* USER CODE BEGIN WHILE */
220
  /* USER CODE BEGIN WHILE */
208
  while (1)
221
  while (1)
209
    {
222
    {
-
 
223
      uint32_t timeNow = HAL_GetTick ();
210
 
224
 
211
 
-
 
-
 
225
      if (timeNow < timeNext)
-
 
226
        HAL_Delay (timeNext - timeNow);
-
 
227
      timeNext += TICKS_LOOP;
212
      cc_run (&bmp);
228
      cc_run (&bmp);
213
 
229
 
-
 
230
      /* USER CODE END WHILE */
214
 
231
 
215
 
-
 
216
      HAL_Delay (250);
-
 
217
 
-
 
218
    /* USER CODE END WHILE */
-
 
219
 
-
 
220
    /* USER CODE BEGIN 3 */
232
      /* USER CODE BEGIN 3 */
221
    }
233
    }
222
  /* USER CODE END 3 */
234
  /* USER CODE END 3 */
223
}
235
}
224
 
236
 
225
/**
237
/**
226
  * @brief System Clock Configuration
238
 * @brief System Clock Configuration
227
  * @retval None
239
 * @retval None
228
  */
240
 */
-
 
241
void
229
void SystemClock_Config(void)
242
SystemClock_Config (void)
230
{
243
{
231
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
244
  RCC_OscInitTypeDef RCC_OscInitStruct =
-
 
245
    { 0 };
232
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
246
  RCC_ClkInitTypeDef RCC_ClkInitStruct =
-
 
247
    { 0 };
233
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
248
  RCC_PeriphCLKInitTypeDef PeriphClkInit =
-
 
249
    { 0 };
234
 
250
 
235
  /** Initializes the RCC Oscillators according to the specified parameters
251
  /** Initializes the RCC Oscillators according to the specified parameters
236
  * in the RCC_OscInitTypeDef structure.
252
   * in the RCC_OscInitTypeDef structure.
237
  */
253
   */
238
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
254
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE
-
 
255
      | RCC_OSCILLATORTYPE_LSE;
239
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
256
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
240
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
257
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
241
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
258
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
242
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
259
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
243
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
260
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
244
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
261
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
245
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
262
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
246
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
263
  if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK)
247
  {
264
    {
248
    Error_Handler();
265
      Error_Handler ();
249
  }
266
    }
250
  /** Initializes the CPU, AHB and APB buses clocks
267
  /** Initializes the CPU, AHB and APB buses clocks
251
  */
268
   */
252
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
269
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
253
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
270
      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
254
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
271
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
255
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
272
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
256
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
273
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
257
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
274
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
258
 
275
 
259
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
276
  if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
260
  {
277
    {
261
    Error_Handler();
278
      Error_Handler ();
262
  }
279
    }
263
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USB;
280
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_USB;
264
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
281
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
265
  PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
282
  PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
266
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
283
  if (HAL_RCCEx_PeriphCLKConfig (&PeriphClkInit) != HAL_OK)
267
  {
284
    {
268
    Error_Handler();
285
      Error_Handler ();
269
  }
286
    }
270
}
287
}
271
 
288
 
272
/**
289
/**
273
  * @brief I2C2 Initialization Function
290
 * @brief I2C2 Initialization Function
274
  * @param None
291
 * @param None
275
  * @retval None
292
 * @retval None
276
  */
293
 */
-
 
294
static void
277
static void MX_I2C2_Init(void)
295
MX_I2C2_Init (void)
278
{
296
{
279
 
297
 
280
  /* USER CODE BEGIN I2C2_Init 0 */
298
  /* USER CODE BEGIN I2C2_Init 0 */
281
 
299
 
282
  /* USER CODE END I2C2_Init 0 */
300
  /* USER CODE END I2C2_Init 0 */
Line 291... Line 309...
291
  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
309
  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
292
  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
310
  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
293
  hi2c2.Init.OwnAddress2 = 0;
311
  hi2c2.Init.OwnAddress2 = 0;
294
  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
312
  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
295
  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
313
  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
296
  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
314
  if (HAL_I2C_Init (&hi2c2) != HAL_OK)
297
  {
315
    {
298
    Error_Handler();
316
      Error_Handler ();
299
  }
317
    }
300
  /* USER CODE BEGIN I2C2_Init 2 */
318
  /* USER CODE BEGIN I2C2_Init 2 */
301
 
319
 
302
  /* USER CODE END I2C2_Init 2 */
320
  /* USER CODE END I2C2_Init 2 */
303
 
321
 
304
}
322
}
305
 
323
 
306
/**
324
/**
307
  * @brief RTC Initialization Function
325
 * @brief RTC Initialization Function
308
  * @param None
326
 * @param None
309
  * @retval None
327
 * @retval None
310
  */
328
 */
-
 
329
static void
311
static void MX_RTC_Init(void)
330
MX_RTC_Init (void)
312
{
331
{
313
 
332
 
314
  /* USER CODE BEGIN RTC_Init 0 */
333
  /* USER CODE BEGIN RTC_Init 0 */
315
 
334
 
316
  /* USER CODE END RTC_Init 0 */
335
  /* USER CODE END RTC_Init 0 */
317
 
336
 
318
  RTC_TimeTypeDef sTime = {0};
337
  RTC_TimeTypeDef sTime =
-
 
338
    { 0 };
319
  RTC_DateTypeDef DateToUpdate = {0};
339
  RTC_DateTypeDef DateToUpdate =
-
 
340
    { 0 };
320
 
341
 
321
  /* USER CODE BEGIN RTC_Init 1 */
342
  /* USER CODE BEGIN RTC_Init 1 */
322
 
343
 
323
  /* USER CODE END RTC_Init 1 */
344
  /* USER CODE END RTC_Init 1 */
324
  /** Initialize RTC Only
345
  /** Initialize RTC Only
325
  */
346
   */
326
  hrtc.Instance = RTC;
347
  hrtc.Instance = RTC;
327
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
348
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
328
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
349
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
329
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
350
  if (HAL_RTC_Init (&hrtc) != HAL_OK)
330
  {
351
    {
331
    Error_Handler();
352
      Error_Handler ();
332
  }
353
    }
333
 
354
 
334
  /* USER CODE BEGIN Check_RTC_BKUP */
355
  /* USER CODE BEGIN Check_RTC_BKUP */
335
 
356
 
336
  /* USER CODE END Check_RTC_BKUP */
357
  /* USER CODE END Check_RTC_BKUP */
337
 
358
 
338
  /** Initialize RTC and set the Time and Date
359
  /** Initialize RTC and set the Time and Date
339
  */
360
   */
340
  sTime.Hours = 0x0;
361
  sTime.Hours = 0x0;
341
  sTime.Minutes = 0x0;
362
  sTime.Minutes = 0x0;
342
  sTime.Seconds = 0x0;
363
  sTime.Seconds = 0x0;
343
 
364
 
344
  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
365
  if (HAL_RTC_SetTime (&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
345
  {
366
    {
346
    Error_Handler();
367
      Error_Handler ();
347
  }
368
    }
348
  DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
369
  DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
349
  DateToUpdate.Month = RTC_MONTH_JANUARY;
370
  DateToUpdate.Month = RTC_MONTH_JANUARY;
350
  DateToUpdate.Date = 0x1;
371
  DateToUpdate.Date = 0x1;
351
  DateToUpdate.Year = 0x0;
372
  DateToUpdate.Year = 0x0;
352
 
373
 
353
  if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
374
  if (HAL_RTC_SetDate (&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
354
  {
375
    {
355
    Error_Handler();
376
      Error_Handler ();
356
  }
377
    }
357
  /* USER CODE BEGIN RTC_Init 2 */
378
  /* USER CODE BEGIN RTC_Init 2 */
358
 
379
 
359
  /* USER CODE END RTC_Init 2 */
380
  /* USER CODE END RTC_Init 2 */
360
 
381
 
361
}
382
}
362
 
383
 
363
/**
384
/**
364
  * @brief SPI1 Initialization Function
385
 * @brief SPI1 Initialization Function
365
  * @param None
386
 * @param None
366
  * @retval None
387
 * @retval None
367
  */
388
 */
-
 
389
static void
368
static void MX_SPI1_Init(void)
390
MX_SPI1_Init (void)
369
{
391
{
370
 
392
 
371
  /* USER CODE BEGIN SPI1_Init 0 */
393
  /* USER CODE BEGIN SPI1_Init 0 */
372
 
394
 
373
  /* USER CODE END SPI1_Init 0 */
395
  /* USER CODE END SPI1_Init 0 */
Line 386... Line 408...
386
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
408
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
387
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
409
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
388
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
410
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
389
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
411
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
390
  hspi1.Init.CRCPolynomial = 10;
412
  hspi1.Init.CRCPolynomial = 10;
391
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
413
  if (HAL_SPI_Init (&hspi1) != HAL_OK)
392
  {
414
    {
393
    Error_Handler();
415
      Error_Handler ();
394
  }
416
    }
395
  /* USER CODE BEGIN SPI1_Init 2 */
417
  /* USER CODE BEGIN SPI1_Init 2 */
396
 
418
 
397
  /* USER CODE END SPI1_Init 2 */
419
  /* USER CODE END SPI1_Init 2 */
398
 
420
 
399
}
421
}
400
 
422
 
401
/**
423
/**
402
  * @brief TIM3 Initialization Function
424
 * @brief TIM3 Initialization Function
403
  * @param None
425
 * @param None
404
  * @retval None
426
 * @retval None
405
  */
427
 */
-
 
428
static void
406
static void MX_TIM3_Init(void)
429
MX_TIM3_Init (void)
407
{
430
{
408
 
431
 
409
  /* USER CODE BEGIN TIM3_Init 0 */
432
  /* USER CODE BEGIN TIM3_Init 0 */
410
 
433
 
411
  /* USER CODE END TIM3_Init 0 */
434
  /* USER CODE END TIM3_Init 0 */
412
 
435
 
413
  TIM_MasterConfigTypeDef sMasterConfig = {0};
436
  TIM_MasterConfigTypeDef sMasterConfig =
-
 
437
    { 0 };
414
  TIM_OC_InitTypeDef sConfigOC = {0};
438
  TIM_OC_InitTypeDef sConfigOC =
-
 
439
    { 0 };
415
 
440
 
416
  /* USER CODE BEGIN TIM3_Init 1 */
441
  /* USER CODE BEGIN TIM3_Init 1 */
417
 
442
 
418
  /* USER CODE END TIM3_Init 1 */
443
  /* USER CODE END TIM3_Init 1 */
419
  htim3.Instance = TIM3;
444
  htim3.Instance = TIM3;
420
  htim3.Init.Prescaler = 719;
445
  htim3.Init.Prescaler = 719;
421
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
446
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
422
  htim3.Init.Period = 10000;
447
  htim3.Init.Period = 10000;
423
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
448
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
424
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
449
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
425
  if (HAL_TIM_OC_Init(&htim3) != HAL_OK)
450
  if (HAL_TIM_OC_Init (&htim3) != HAL_OK)
426
  {
451
    {
427
    Error_Handler();
452
      Error_Handler ();
428
  }
453
    }
429
  if (HAL_TIM_OnePulse_Init(&htim3, TIM_OPMODE_SINGLE) != HAL_OK)
454
  if (HAL_TIM_OnePulse_Init (&htim3, TIM_OPMODE_SINGLE) != HAL_OK)
430
  {
455
    {
431
    Error_Handler();
456
      Error_Handler ();
432
  }
457
    }
433
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_ENABLE;
458
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_ENABLE;
434
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
459
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
435
  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
460
  if (HAL_TIMEx_MasterConfigSynchronization (&htim3, &sMasterConfig) != HAL_OK)
436
  {
461
    {
437
    Error_Handler();
462
      Error_Handler ();
438
  }
463
    }
439
  sConfigOC.OCMode = TIM_OCMODE_TIMING;
464
  sConfigOC.OCMode = TIM_OCMODE_TIMING;
440
  sConfigOC.Pulse = 9999;
465
  sConfigOC.Pulse = 9999;
441
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
466
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
442
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
467
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
443
  if (HAL_TIM_OC_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
468
  if (HAL_TIM_OC_ConfigChannel (&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
444
  {
469
    {
445
    Error_Handler();
470
      Error_Handler ();
446
  }
471
    }
447
  /* USER CODE BEGIN TIM3_Init 2 */
472
  /* USER CODE BEGIN TIM3_Init 2 */
448
 
473
 
449
  /* USER CODE END TIM3_Init 2 */
474
  /* USER CODE END TIM3_Init 2 */
450
 
475
 
451
}
476
}
452
 
477
 
453
/**
478
/**
454
  * @brief TIM4 Initialization Function
479
 * @brief TIM4 Initialization Function
455
  * @param None
480
 * @param None
456
  * @retval None
481
 * @retval None
457
  */
482
 */
-
 
483
static void
458
static void MX_TIM4_Init(void)
484
MX_TIM4_Init (void)
459
{
485
{
460
 
486
 
461
  /* USER CODE BEGIN TIM4_Init 0 */
487
  /* USER CODE BEGIN TIM4_Init 0 */
462
 
488
 
463
  /* USER CODE END TIM4_Init 0 */
489
  /* USER CODE END TIM4_Init 0 */
464
 
490
 
465
  TIM_Encoder_InitTypeDef sConfig = {0};
491
  TIM_Encoder_InitTypeDef sConfig =
-
 
492
    { 0 };
466
  TIM_MasterConfigTypeDef sMasterConfig = {0};
493
  TIM_MasterConfigTypeDef sMasterConfig =
-
 
494
    { 0 };
467
 
495
 
468
  /* USER CODE BEGIN TIM4_Init 1 */
496
  /* USER CODE BEGIN TIM4_Init 1 */
469
 
497
 
470
  /* USER CODE END TIM4_Init 1 */
498
  /* USER CODE END TIM4_Init 1 */
471
  htim4.Instance = TIM4;
499
  htim4.Instance = TIM4;
Line 481... Line 509...
481
  sConfig.IC1Filter = 15;
509
  sConfig.IC1Filter = 15;
482
  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
510
  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
483
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
511
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
484
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
512
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
485
  sConfig.IC2Filter = 15;
513
  sConfig.IC2Filter = 15;
486
  if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK)
514
  if (HAL_TIM_Encoder_Init (&htim4, &sConfig) != HAL_OK)
487
  {
515
    {
488
    Error_Handler();
516
      Error_Handler ();
489
  }
517
    }
490
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
518
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
491
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
519
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
492
  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
520
  if (HAL_TIMEx_MasterConfigSynchronization (&htim4, &sMasterConfig) != HAL_OK)
493
  {
521
    {
494
    Error_Handler();
522
      Error_Handler ();
495
  }
523
    }
496
  /* USER CODE BEGIN TIM4_Init 2 */
524
  /* USER CODE BEGIN TIM4_Init 2 */
497
 
525
 
498
  /* USER CODE END TIM4_Init 2 */
526
  /* USER CODE END TIM4_Init 2 */
499
 
527
 
500
}
528
}
501
 
529
 
502
/**
530
/**
503
  * @brief USART1 Initialization Function
531
 * @brief USART1 Initialization Function
504
  * @param None
532
 * @param None
505
  * @retval None
533
 * @retval None
506
  */
534
 */
-
 
535
static void
507
static void MX_USART1_UART_Init(void)
536
MX_USART1_UART_Init (void)
508
{
537
{
509
 
538
 
510
  /* USER CODE BEGIN USART1_Init 0 */
539
  /* USER CODE BEGIN USART1_Init 0 */
511
 
540
 
512
  /* USER CODE END USART1_Init 0 */
541
  /* USER CODE END USART1_Init 0 */
Line 520... Line 549...
520
  huart1.Init.StopBits = UART_STOPBITS_1;
549
  huart1.Init.StopBits = UART_STOPBITS_1;
521
  huart1.Init.Parity = UART_PARITY_NONE;
550
  huart1.Init.Parity = UART_PARITY_NONE;
522
  huart1.Init.Mode = UART_MODE_TX_RX;
551
  huart1.Init.Mode = UART_MODE_TX_RX;
523
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
552
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
524
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
553
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
525
  if (HAL_UART_Init(&huart1) != HAL_OK)
554
  if (HAL_UART_Init (&huart1) != HAL_OK)
526
  {
555
    {
527
    Error_Handler();
556
      Error_Handler ();
528
  }
557
    }
529
  /* USER CODE BEGIN USART1_Init 2 */
558
  /* USER CODE BEGIN USART1_Init 2 */
530
 
559
 
531
  /* USER CODE END USART1_Init 2 */
560
  /* USER CODE END USART1_Init 2 */
532
 
561
 
533
}
562
}
534
 
563
 
535
/**
564
/**
536
  * @brief GPIO Initialization Function
565
 * @brief GPIO Initialization Function
537
  * @param None
566
 * @param None
538
  * @retval None
567
 * @retval None
539
  */
568
 */
-
 
569
static void
540
static void MX_GPIO_Init(void)
570
MX_GPIO_Init (void)
541
{
571
{
542
  GPIO_InitTypeDef GPIO_InitStruct = {0};
572
  GPIO_InitTypeDef GPIO_InitStruct =
-
 
573
    { 0 };
543
 
574
 
544
  /* GPIO Ports Clock Enable */
575
  /* GPIO Ports Clock Enable */
545
  __HAL_RCC_GPIOC_CLK_ENABLE();
576
  __HAL_RCC_GPIOC_CLK_ENABLE();
546
  __HAL_RCC_GPIOD_CLK_ENABLE();
577
  __HAL_RCC_GPIOD_CLK_ENABLE();
547
  __HAL_RCC_GPIOA_CLK_ENABLE();
578
  __HAL_RCC_GPIOA_CLK_ENABLE();
548
  __HAL_RCC_GPIOB_CLK_ENABLE();
579
  __HAL_RCC_GPIOB_CLK_ENABLE();
549
 
580
 
550
  /*Configure GPIO pin Output Level */
581
  /*Configure GPIO pin Output Level */
551
  HAL_GPIO_WritePin(GPIOA, SPI_CD_Pin|SPI_RESET_Pin|SPI_NSS1_Pin, GPIO_PIN_RESET);
582
  HAL_GPIO_WritePin (GPIOA, SPI_CD_Pin | SPI_RESET_Pin | SPI_NSS1_Pin,
-
 
583
                     GPIO_PIN_RESET);
552
 
584
 
553
  /*Configure GPIO pin Output Level */
585
  /*Configure GPIO pin Output Level */
554
  HAL_GPIO_WritePin(USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_RESET);
586
  HAL_GPIO_WritePin (USB_PULLUP_GPIO_Port, USB_PULLUP_Pin, GPIO_PIN_RESET);
555
 
587
 
556
  /*Configure GPIO pins : SPI_CD_Pin SPI_RESET_Pin SPI_NSS1_Pin */
588
  /*Configure GPIO pins : SPI_CD_Pin SPI_RESET_Pin SPI_NSS1_Pin */
557
  GPIO_InitStruct.Pin = SPI_CD_Pin|SPI_RESET_Pin|SPI_NSS1_Pin;
589
  GPIO_InitStruct.Pin = SPI_CD_Pin | SPI_RESET_Pin | SPI_NSS1_Pin;
558
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
590
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
559
  GPIO_InitStruct.Pull = GPIO_NOPULL;
591
  GPIO_InitStruct.Pull = GPIO_NOPULL;
560
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
592
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
561
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
593
  HAL_GPIO_Init (GPIOA, &GPIO_InitStruct);
562
 
594
 
563
  /*Configure GPIO pin : USB_PULLUP_Pin */
595
  /*Configure GPIO pin : USB_PULLUP_Pin */
564
  GPIO_InitStruct.Pin = USB_PULLUP_Pin;
596
  GPIO_InitStruct.Pin = USB_PULLUP_Pin;
565
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
597
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
566
  GPIO_InitStruct.Pull = GPIO_NOPULL;
598
  GPIO_InitStruct.Pull = GPIO_NOPULL;
567
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
599
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
568
  HAL_GPIO_Init(USB_PULLUP_GPIO_Port, &GPIO_InitStruct);
600
  HAL_GPIO_Init (USB_PULLUP_GPIO_Port, &GPIO_InitStruct);
569
 
601
 
570
  /*Configure GPIO pin : encoder_push_Pin */
602
  /*Configure GPIO pin : encoder_push_Pin */
571
  GPIO_InitStruct.Pin = encoder_push_Pin;
603
  GPIO_InitStruct.Pin = encoder_push_Pin;
572
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
604
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
573
  GPIO_InitStruct.Pull = GPIO_PULLUP;
605
  GPIO_InitStruct.Pull = GPIO_PULLUP;
574
  HAL_GPIO_Init(encoder_push_GPIO_Port, &GPIO_InitStruct);
606
  HAL_GPIO_Init (encoder_push_GPIO_Port, &GPIO_InitStruct);
575
 
607
 
576
}
608
}
577
 
609
 
578
/* USER CODE BEGIN 4 */
610
/* USER CODE BEGIN 4 */
579
 
611
 
580
/* USER CODE END 4 */
612
/* USER CODE END 4 */
581
 
613
 
582
/**
614
/**
583
  * @brief  This function is executed in case of error occurrence.
615
 * @brief  This function is executed in case of error occurrence.
584
  * @retval None
616
 * @retval None
585
  */
617
 */
-
 
618
void
586
void Error_Handler(void)
619
Error_Handler (void)
587
{
620
{
588
  /* USER CODE BEGIN Error_Handler_Debug */
621
  /* USER CODE BEGIN Error_Handler_Debug */
589
  /* User can add his own implementation to report the HAL error return state */
622
  /* User can add his own implementation to report the HAL error return state */
590
 
623
 
591
  /* USER CODE END Error_Handler_Debug */
624
  /* USER CODE END Error_Handler_Debug */