Subversion Repositories dashGPS

Rev

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

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