Rev 12 | Rev 14 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 12 | Rev 13 | ||
---|---|---|---|
Line 17... | Line 17... | ||
17 | ****************************************************************************** |
17 | ****************************************************************************** |
18 | */ |
18 | */ |
19 | /* USER CODE END Header */ |
19 | /* USER CODE END Header */ |
20 | /* Includes ------------------------------------------------------------------*/ |
20 | /* Includes ------------------------------------------------------------------*/ |
21 | #include "main.h" |
21 | #include "main.h" |
- | 22 | #include "usb_device.h" |
|
22 | 23 | ||
23 | /* Private includes ----------------------------------------------------------*/ |
24 | /* Private includes ----------------------------------------------------------*/ |
24 | /* USER CODE BEGIN Includes */ |
25 | /* USER CODE BEGIN Includes */ |
25 | #include "libSerial/serial.h" |
26 | #include "libSerial/serial.h" |
26 | #include "libBMP280/bmp280.h" |
27 | #include "libBMP280/bmp280.h" |
Line 40... | Line 41... | ||
40 | /* USER CODE BEGIN PM */ |
41 | /* USER CODE BEGIN PM */ |
41 | 42 | ||
42 | /* USER CODE END PM */ |
43 | /* USER CODE END PM */ |
43 | 44 | ||
44 | /* Private variables ---------------------------------------------------------*/ |
45 | /* Private variables ---------------------------------------------------------*/ |
45 | CAN_HandleTypeDef hcan; |
- | |
46 | - | ||
47 | I2C_HandleTypeDef hi2c2; |
46 | I2C_HandleTypeDef hi2c2; |
48 | 47 | ||
- | 48 | RTC_HandleTypeDef hrtc; |
|
- | 49 | ||
49 | SPI_HandleTypeDef hspi1; |
50 | SPI_HandleTypeDef hspi1; |
50 | 51 | ||
51 | TIM_HandleTypeDef htim3; |
52 | TIM_HandleTypeDef htim3; |
52 | TIM_HandleTypeDef htim4; |
53 | TIM_HandleTypeDef htim4; |
53 | 54 | ||
Line 102... | Line 103... | ||
102 | /* USER CODE END PV */ |
103 | /* USER CODE END PV */ |
103 | 104 | ||
104 | /* Private function prototypes -----------------------------------------------*/ |
105 | /* Private function prototypes -----------------------------------------------*/ |
105 | void SystemClock_Config(void); |
106 | void SystemClock_Config(void); |
106 | static void MX_GPIO_Init(void); |
107 | static void MX_GPIO_Init(void); |
107 | static void MX_CAN_Init(void); |
- | |
108 | static void MX_SPI1_Init(void); |
108 | static void MX_SPI1_Init(void); |
109 | static void MX_TIM4_Init(void); |
109 | static void MX_TIM4_Init(void); |
110 | static void MX_USART1_UART_Init(void); |
110 | static void MX_USART1_UART_Init(void); |
111 | static void MX_TIM3_Init(void); |
111 | static void MX_TIM3_Init(void); |
112 | static void MX_I2C2_Init(void); |
112 | static void MX_I2C2_Init(void); |
- | 113 | static void MX_RTC_Init(void); |
|
113 | /* USER CODE BEGIN PFP */ |
114 | /* USER CODE BEGIN PFP */ |
114 | 115 | ||
115 | /* USER CODE END PFP */ |
116 | /* USER CODE END PFP */ |
116 | 117 | ||
117 | /* Private user code ---------------------------------------------------------*/ |
118 | /* Private user code ---------------------------------------------------------*/ |
Line 145... | Line 146... | ||
145 | 146 | ||
146 | /* USER CODE END SysInit */ |
147 | /* USER CODE END SysInit */ |
147 | 148 | ||
148 | /* Initialize all configured peripherals */ |
149 | /* Initialize all configured peripherals */ |
149 | MX_GPIO_Init(); |
150 | MX_GPIO_Init(); |
150 | MX_CAN_Init(); |
- | |
151 | MX_SPI1_Init(); |
151 | MX_SPI1_Init(); |
152 | MX_TIM4_Init(); |
152 | MX_TIM4_Init(); |
153 | MX_USART1_UART_Init(); |
153 | MX_USART1_UART_Init(); |
154 | MX_TIM3_Init(); |
154 | MX_TIM3_Init(); |
155 | MX_I2C2_Init(); |
155 | MX_I2C2_Init(); |
- | 156 | MX_RTC_Init(); |
|
- | 157 | MX_USB_DEVICE_Init(); |
|
156 | /* USER CODE BEGIN 2 */ |
158 | /* USER CODE BEGIN 2 */ |
157 | __HAL_RCC_USART1_CLK_ENABLE(); |
159 | __HAL_RCC_USART1_CLK_ENABLE(); |
158 | /* setup the USART control blocks */ |
160 | /* setup the USART control blocks */ |
159 | init_usart_ctl (&uc1, &huart1); |
161 | init_usart_ctl (&uc1, &huart1); |
160 | 162 | ||
Line 216... | Line 218... | ||
216 | */ |
218 | */ |
217 | void SystemClock_Config(void) |
219 | void SystemClock_Config(void) |
218 | { |
220 | { |
219 | RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
221 | RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
220 | RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
222 | RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
- | 223 | RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; |
|
221 | 224 | ||
222 | /** Initializes the RCC Oscillators according to the specified parameters |
225 | /** Initializes the RCC Oscillators according to the specified parameters |
223 | * in the RCC_OscInitTypeDef structure. |
226 | * in the RCC_OscInitTypeDef structure. |
224 | */ |
227 | */ |
225 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; |
228 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; |
226 | RCC_OscInitStruct.HSEState = RCC_HSE_ON; |
229 | RCC_OscInitStruct.HSEState = RCC_HSE_ON; |
227 | RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; |
230 | RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; |
- | 231 | RCC_OscInitStruct.LSEState = RCC_LSE_ON; |
|
228 | RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
232 | RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
229 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
233 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
230 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
234 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
231 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8; |
235 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; |
232 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
236 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
233 | { |
237 | { |
234 | Error_Handler(); |
238 | Error_Handler(); |
235 | } |
239 | } |
236 | /** Initializes the CPU, AHB and APB buses clocks |
240 | /** Initializes the CPU, AHB and APB buses clocks |
Line 244... | Line 248... | ||
244 | 248 | ||
245 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
249 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
246 | { |
250 | { |
247 | Error_Handler(); |
251 | Error_Handler(); |
248 | } |
252 | } |
249 | } |
- | |
250 | - | ||
251 | /** |
- | |
252 | * @brief CAN Initialization Function |
- | |
253 | * @param None |
- | |
254 | * @retval None |
- | |
255 | */ |
- | |
256 | static void MX_CAN_Init(void) |
- | |
257 | { |
- | |
258 | - | ||
259 | /* USER CODE BEGIN CAN_Init 0 */ |
- | |
260 | - | ||
261 | /* USER CODE END CAN_Init 0 */ |
- | |
262 | - | ||
263 | /* USER CODE BEGIN CAN_Init 1 */ |
- | |
264 | - | ||
265 | /* USER CODE END CAN_Init 1 */ |
- | |
266 | hcan.Instance = CAN1; |
- | |
267 | hcan.Init.Prescaler = 16; |
- | |
268 | hcan.Init.Mode = CAN_MODE_NORMAL; |
253 | PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USB; |
269 | hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; |
- | |
270 | hcan.Init.TimeSeg1 = CAN_BS1_1TQ; |
- | |
271 | hcan.Init.TimeSeg2 = CAN_BS2_1TQ; |
- | |
272 | hcan.Init.TimeTriggeredMode = DISABLE; |
254 | PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; |
273 | hcan.Init.AutoBusOff = DISABLE; |
- | |
274 | hcan.Init.AutoWakeUp = DISABLE; |
- | |
275 | hcan.Init.AutoRetransmission = DISABLE; |
255 | PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; |
276 | hcan.Init.ReceiveFifoLocked = DISABLE; |
- | |
277 | hcan.Init.TransmitFifoPriority = DISABLE; |
- | |
278 | if (HAL_CAN_Init(&hcan) != HAL_OK) |
256 | if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) |
279 | { |
257 | { |
280 | Error_Handler(); |
258 | Error_Handler(); |
281 | } |
259 | } |
282 | /* USER CODE BEGIN CAN_Init 2 */ |
- | |
283 | - | ||
284 | /* USER CODE END CAN_Init 2 */ |
- | |
285 | - | ||
286 | } |
260 | } |
287 | 261 | ||
288 | /** |
262 | /** |
289 | * @brief I2C2 Initialization Function |
263 | * @brief I2C2 Initialization Function |
290 | * @param None |
264 | * @param None |
Line 318... | Line 292... | ||
318 | /* USER CODE END I2C2_Init 2 */ |
292 | /* USER CODE END I2C2_Init 2 */ |
319 | 293 | ||
320 | } |
294 | } |
321 | 295 | ||
322 | /** |
296 | /** |
- | 297 | * @brief RTC Initialization Function |
|
- | 298 | * @param None |
|
- | 299 | * @retval None |
|
- | 300 | */ |
|
- | 301 | static void MX_RTC_Init(void) |
|
- | 302 | { |
|
- | 303 | ||
- | 304 | /* USER CODE BEGIN RTC_Init 0 */ |
|
- | 305 | ||
- | 306 | /* USER CODE END RTC_Init 0 */ |
|
- | 307 | ||
- | 308 | RTC_TimeTypeDef sTime = {0}; |
|
- | 309 | RTC_DateTypeDef DateToUpdate = {0}; |
|
- | 310 | ||
- | 311 | /* USER CODE BEGIN RTC_Init 1 */ |
|
- | 312 | ||
- | 313 | /* USER CODE END RTC_Init 1 */ |
|
- | 314 | /** Initialize RTC Only |
|
- | 315 | */ |
|
- | 316 | hrtc.Instance = RTC; |
|
- | 317 | hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND; |
|
- | 318 | hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM; |
|
- | 319 | if (HAL_RTC_Init(&hrtc) != HAL_OK) |
|
- | 320 | { |
|
- | 321 | Error_Handler(); |
|
- | 322 | } |
|
- | 323 | ||
- | 324 | /* USER CODE BEGIN Check_RTC_BKUP */ |
|
- | 325 | ||
- | 326 | /* USER CODE END Check_RTC_BKUP */ |
|
- | 327 | ||
- | 328 | /** Initialize RTC and set the Time and Date |
|
- | 329 | */ |
|
- | 330 | sTime.Hours = 0x0; |
|
- | 331 | sTime.Minutes = 0x0; |
|
- | 332 | sTime.Seconds = 0x0; |
|
- | 333 | ||
- | 334 | if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) |
|
- | 335 | { |
|
- | 336 | Error_Handler(); |
|
- | 337 | } |
|
- | 338 | DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY; |
|
- | 339 | DateToUpdate.Month = RTC_MONTH_JANUARY; |
|
- | 340 | DateToUpdate.Date = 0x1; |
|
- | 341 | DateToUpdate.Year = 0x0; |
|
- | 342 | ||
- | 343 | if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK) |
|
- | 344 | { |
|
- | 345 | Error_Handler(); |
|
- | 346 | } |
|
- | 347 | /* USER CODE BEGIN RTC_Init 2 */ |
|
- | 348 | ||
- | 349 | /* USER CODE END RTC_Init 2 */ |
|
- | 350 | ||
- | 351 | } |
|
- | 352 | ||
- | 353 | /** |
|
323 | * @brief SPI1 Initialization Function |
354 | * @brief SPI1 Initialization Function |
324 | * @param None |
355 | * @param None |
325 | * @retval None |
356 | * @retval None |
326 | */ |
357 | */ |
327 | static void MX_SPI1_Init(void) |
358 | static void MX_SPI1_Init(void) |
Line 505... | Line 536... | ||
505 | __HAL_RCC_GPIOD_CLK_ENABLE(); |
536 | __HAL_RCC_GPIOD_CLK_ENABLE(); |
506 | __HAL_RCC_GPIOA_CLK_ENABLE(); |
537 | __HAL_RCC_GPIOA_CLK_ENABLE(); |
507 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
538 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
508 | 539 | ||
509 | /*Configure GPIO pin Output Level */ |
540 | /*Configure GPIO pin Output Level */ |
510 | HAL_GPIO_WritePin(GPIOC, SPI_CD_Pin|SPI_RESET_Pin, GPIO_PIN_RESET); |
541 | HAL_GPIO_WritePin(GPIOA, SPI_CD_Pin|SPI_RESET_Pin|SPI_NSS1_Pin, GPIO_PIN_RESET); |
511 | - | ||
512 | /*Configure GPIO pin Output Level */ |
- | |
513 | HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_RESET); |
- | |
514 | - | ||
515 | /*Configure GPIO pins : SPI_CD_Pin SPI_RESET_Pin */ |
- | |
516 | GPIO_InitStruct.Pin = SPI_CD_Pin|SPI_RESET_Pin; |
- | |
517 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
- | |
518 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
- | |
519 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
- | |
520 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
- | |
521 | 542 | ||
522 | /*Configure GPIO pin : SPI_NSS1_Pin */ |
543 | /*Configure GPIO pins : SPI_CD_Pin SPI_RESET_Pin SPI_NSS1_Pin */ |
523 | GPIO_InitStruct.Pin = SPI_NSS1_Pin; |
544 | GPIO_InitStruct.Pin = SPI_CD_Pin|SPI_RESET_Pin|SPI_NSS1_Pin; |
524 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
545 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
525 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
546 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
526 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
547 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
527 | HAL_GPIO_Init(SPI_NSS1_GPIO_Port, &GPIO_InitStruct); |
548 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
528 | 549 | ||
529 | } |
550 | } |
530 | 551 | ||
531 | /* USER CODE BEGIN 4 */ |
552 | /* USER CODE BEGIN 4 */ |
532 | 553 |