|
@@ -62,6 +62,12 @@
|
|
|
/* USER CODE END PM */
|
|
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
+IWDG_HandleTypeDef hiwdg;
|
|
|
+
|
|
|
+RTC_HandleTypeDef hrtc;
|
|
|
+
|
|
|
+SPI_HandleTypeDef hspi1;
|
|
|
+
|
|
|
TIM_HandleTypeDef htim3;
|
|
|
|
|
|
UART_HandleTypeDef huart2;
|
|
@@ -77,6 +83,9 @@ static void MX_GPIO_Init(void);
|
|
|
static void MX_USART2_UART_Init(void);
|
|
|
static void MX_TIM3_Init(void);
|
|
|
static void MX_USART6_UART_Init(void);
|
|
|
+static void MX_RTC_Init(void);
|
|
|
+static void MX_IWDG_Init(void);
|
|
|
+static void MX_SPI1_Init(void);
|
|
|
/* USER CODE BEGIN PFP */
|
|
|
|
|
|
/* USER CODE END PFP */
|
|
@@ -117,6 +126,9 @@ int main(void)
|
|
|
MX_USART2_UART_Init();
|
|
|
MX_TIM3_Init();
|
|
|
MX_USART6_UART_Init();
|
|
|
+ MX_RTC_Init();
|
|
|
+ MX_IWDG_Init();
|
|
|
+ MX_SPI1_Init();
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
|
|
|
/* USER CODE END 2 */
|
|
@@ -140,6 +152,7 @@ void SystemClock_Config(void)
|
|
|
{
|
|
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
|
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
|
|
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
|
|
|
|
|
/**Configure the main internal regulator output voltage
|
|
|
*/
|
|
@@ -147,8 +160,9 @@ void SystemClock_Config(void)
|
|
|
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
|
|
|
/**Initializes the CPU, AHB and APB busses clocks
|
|
|
*/
|
|
|
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
|
|
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
|
|
|
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
|
|
|
+ RCC_OscInitStruct.LSIState = RCC_LSI_ON;
|
|
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
|
|
RCC_OscInitStruct.PLL.PLLM = 4;
|
|
@@ -172,6 +186,112 @@ void SystemClock_Config(void)
|
|
|
{
|
|
|
Error_Handler();
|
|
|
}
|
|
|
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
|
|
|
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
|
|
|
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
|
|
+ {
|
|
|
+ Error_Handler();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief IWDG Initialization Function
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+static void MX_IWDG_Init(void)
|
|
|
+{
|
|
|
+
|
|
|
+ /* USER CODE BEGIN IWDG_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE END IWDG_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE BEGIN IWDG_Init 1 */
|
|
|
+
|
|
|
+ /* USER CODE END IWDG_Init 1 */
|
|
|
+ hiwdg.Instance = IWDG;
|
|
|
+ hiwdg.Init.Prescaler = IWDG_PRESCALER_4;
|
|
|
+ hiwdg.Init.Reload = 4095;
|
|
|
+ if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
|
|
|
+ {
|
|
|
+ Error_Handler();
|
|
|
+ }
|
|
|
+ /* USER CODE BEGIN IWDG_Init 2 */
|
|
|
+
|
|
|
+ /* USER CODE END IWDG_Init 2 */
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief RTC Initialization Function
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+static void MX_RTC_Init(void)
|
|
|
+{
|
|
|
+
|
|
|
+ /* USER CODE BEGIN RTC_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE END RTC_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE BEGIN RTC_Init 1 */
|
|
|
+
|
|
|
+ /* USER CODE END RTC_Init 1 */
|
|
|
+ /**Initialize RTC Only
|
|
|
+ */
|
|
|
+ hrtc.Instance = RTC;
|
|
|
+ hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
|
|
|
+ hrtc.Init.AsynchPrediv = 127;
|
|
|
+ hrtc.Init.SynchPrediv = 255;
|
|
|
+ hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
|
|
|
+ hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
|
|
|
+ hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
|
|
|
+ if (HAL_RTC_Init(&hrtc) != HAL_OK)
|
|
|
+ {
|
|
|
+ Error_Handler();
|
|
|
+ }
|
|
|
+ /* USER CODE BEGIN RTC_Init 2 */
|
|
|
+
|
|
|
+ /* USER CODE END RTC_Init 2 */
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief SPI1 Initialization Function
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+static void MX_SPI1_Init(void)
|
|
|
+{
|
|
|
+
|
|
|
+ /* USER CODE BEGIN SPI1_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE END SPI1_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE BEGIN SPI1_Init 1 */
|
|
|
+
|
|
|
+ /* USER CODE END SPI1_Init 1 */
|
|
|
+ /* SPI1 parameter configuration*/
|
|
|
+ hspi1.Instance = SPI1;
|
|
|
+ hspi1.Init.Mode = SPI_MODE_MASTER;
|
|
|
+ hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
|
|
+ hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
|
|
+ hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
|
|
|
+ hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
|
|
|
+ hspi1.Init.NSS = SPI_NSS_SOFT;
|
|
|
+ hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
|
|
+ hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
|
|
+ hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
|
|
+ hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
|
|
+ hspi1.Init.CRCPolynomial = 10;
|
|
|
+ if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
|
|
+ {
|
|
|
+ Error_Handler();
|
|
|
+ }
|
|
|
+ /* USER CODE BEGIN SPI1_Init 2 */
|
|
|
+
|
|
|
+ /* USER CODE END SPI1_Init 2 */
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|