Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.22 KB | None | 0 0
  1. /* USER CODE BEGIN Header */
  2. /**
  3.   ******************************************************************************
  4.   * @file           : main.c
  5.   * @brief          : Main program body
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19. /* USER CODE END Header */
  20.  
  21. /* Includes ------------------------------------------------------------------*/
  22. #include "main.h"
  23.  
  24. /* Private includes ----------------------------------------------------------*/
  25. /* USER CODE BEGIN Includes */
  26.  
  27. /* USER CODE END Includes */
  28.  
  29. /* Private typedef -----------------------------------------------------------*/
  30. /* USER CODE BEGIN PTD */
  31.  
  32. /* USER CODE END PTD */
  33.  
  34. /* Private define ------------------------------------------------------------*/
  35. /* USER CODE BEGIN PD */
  36. /* USER CODE END PD */
  37.  
  38. /* Private macro -------------------------------------------------------------*/
  39. /* USER CODE BEGIN PM */
  40.  
  41. /* USER CODE END PM */
  42.  
  43. /* Private variables ---------------------------------------------------------*/
  44. IWDG_HandleTypeDef hiwdg;
  45.  
  46. TIM_HandleTypeDef htim1;
  47.  
  48. UART_HandleTypeDef huart2;
  49.  
  50. /* USER CODE BEGIN PV */
  51.  
  52. /* USER CODE END PV */
  53.  
  54. /* Private function prototypes -----------------------------------------------*/
  55. void SystemClock_Config(void);
  56. static void MX_GPIO_Init(void);
  57. static void MX_TIM1_Init(void);
  58. static void MX_USART2_UART_Init(void);
  59. static void MX_IWDG_Init(void);
  60. /* USER CODE BEGIN PFP */
  61.  
  62. void IDWG_Refresh(void){
  63.     if(HAL_IWDG_Refresh(&hiwdg) != HAL_OK)
  64.     {
  65.         //Error_SetMessage("WATCHDOG CANT REFRESH\r\n");
  66.         Error_Handler();
  67.     }
  68. }
  69. /* USER CODE END PFP */
  70.  
  71. /* Private user code ---------------------------------------------------------*/
  72. /* USER CODE BEGIN 0 */
  73.  
  74. /* USER CODE END 0 */
  75.  
  76. /**
  77.   * @brief  The application entry point.
  78.   * @retval int
  79.   */
  80. int main(void)
  81. {
  82.   /* USER CODE BEGIN 1 */
  83. if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)
  84. {
  85.  
  86. }
  87.   /* USER CODE END 1 */
  88.  
  89.  
  90.   /* MCU Configuration--------------------------------------------------------*/
  91.  
  92.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  93.   HAL_Init();
  94.  
  95.   /* USER CODE BEGIN Init */
  96.  
  97.   /* USER CODE END Init */
  98.  
  99.   /* Configure the system clock */
  100.   SystemClock_Config();
  101.  
  102.   /* USER CODE BEGIN SysInit */
  103.  
  104.   /* USER CODE END SysInit */
  105.  
  106.   /* Initialize all configured peripherals */
  107.   MX_GPIO_Init();
  108.   MX_TIM1_Init();
  109.   MX_USART2_UART_Init();
  110.   MX_IWDG_Init();
  111.   /* USER CODE BEGIN 2 */
  112.   HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
  113.   /* USER CODE END 2 */
  114.  
  115.   /* Infinite loop */
  116.   /* USER CODE BEGIN WHILE */
  117.   while (1)
  118.   {
  119.     /* USER CODE END WHILE */
  120.       if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8)) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, RESET);
  121.       else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, SET);
  122.           IDWG_Refresh();
  123.  
  124.     /* USER CODE BEGIN 3 */
  125.   }
  126.   /* USER CODE END 3 */
  127. }
  128.  
  129. /**
  130.   * @brief System Clock Configuration
  131.   * @retval None
  132.   */
  133. void SystemClock_Config(void)
  134. {
  135.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  136.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  137.  
  138.   /** Initializes the CPU, AHB and APB busses clocks
  139.   */
  140.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
  141.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  142.   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  143.   RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  144.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  145.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
  146.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
  147.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  148.   {
  149.     Error_Handler();
  150.   }
  151.   /** Initializes the CPU, AHB and APB busses clocks
  152.   */
  153.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  154.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  155.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  156.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  157.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  158.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  159.  
  160.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  161.   {
  162.     Error_Handler();
  163.   }
  164. }
  165.  
  166. /**
  167.   * @brief IWDG Initialization Function
  168.   * @param None
  169.   * @retval None
  170.   */
  171. static void MX_IWDG_Init(void)
  172. {
  173.  
  174.   /* USER CODE BEGIN IWDG_Init 0 */
  175.  
  176.   /* USER CODE END IWDG_Init 0 */
  177.  
  178.   /* USER CODE BEGIN IWDG_Init 1 */
  179.  
  180.   /* USER CODE END IWDG_Init 1 */
  181.   hiwdg.Instance = IWDG;
  182.   hiwdg.Init.Prescaler = IWDG_PRESCALER_32;
  183.   hiwdg.Init.Reload = 4095;
  184.   if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  185.   {
  186.     Error_Handler();
  187.   }
  188.   /* USER CODE BEGIN IWDG_Init 2 */
  189.  
  190.   /* USER CODE END IWDG_Init 2 */
  191.  
  192. }
  193.  
  194. /**
  195.   * @brief TIM1 Initialization Function
  196.   * @param None
  197.   * @retval None
  198.   */
  199. static void MX_TIM1_Init(void)
  200. {
  201.  
  202.   /* USER CODE BEGIN TIM1_Init 0 */
  203.  
  204.   /* USER CODE END TIM1_Init 0 */
  205.  
  206.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  207.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  208.   TIM_OC_InitTypeDef oc;
  209.   TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
  210.  
  211.   /* USER CODE BEGIN TIM1_Init 1 */
  212.  
  213.   /* USER CODE END TIM1_Init 1 */
  214.   htim1.Instance = TIM1;
  215.   htim1.Init.Prescaler = 49999;
  216.   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  217.   htim1.Init.Period = 9;
  218.   htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  219.   htim1.Init.RepetitionCounter = 0;
  220.   htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  221.   if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  222.   {
  223.     Error_Handler();
  224.   }
  225.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  226.   if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  227.   {
  228.     Error_Handler();
  229.   }
  230.   if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  231.   {
  232.     Error_Handler();
  233.   }
  234.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  235.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  236.   if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  237.   {
  238.     Error_Handler();
  239.   }
  240.   oc.OCMode = TIM_OCMODE_PWM1;
  241.   oc.Pulse = 0;
  242.   oc.OCPolarity = TIM_OCPOLARITY_HIGH;
  243.   oc.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  244.   oc.OCFastMode = TIM_OCFAST_DISABLE;
  245.   oc.OCIdleState = TIM_OCIDLESTATE_RESET;
  246.   oc.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  247.  
  248.   if (HAL_TIM_PWM_ConfigChannel(&htim1, &oc, TIM_CHANNEL_1) != HAL_OK)
  249.   {
  250.     Error_Handler();
  251.   }
  252.   if (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1) != HAL_OK)
  253.   {
  254.       Error_Handler();
  255.   }
  256.   sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  257.   sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  258.   sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  259.   sBreakDeadTimeConfig.DeadTime = 0;
  260.   sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  261.   sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  262.   sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  263.   if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  264.   {
  265.     Error_Handler();
  266.   }
  267.   /* USER CODE BEGIN TIM1_Init 2 */
  268.  
  269.   /* USER CODE END TIM1_Init 2 */
  270.   HAL_TIM_MspPostInit(&htim1);
  271.  
  272. }
  273.  
  274. /**
  275.   * @brief USART2 Initialization Function
  276.   * @param None
  277.   * @retval None
  278.   */
  279. static void MX_USART2_UART_Init(void)
  280. {
  281.  
  282.   /* USER CODE BEGIN USART2_Init 0 */
  283.  
  284.   /* USER CODE END USART2_Init 0 */
  285.  
  286.   /* USER CODE BEGIN USART2_Init 1 */
  287.  
  288.   /* USER CODE END USART2_Init 1 */
  289.   huart2.Instance = USART2;
  290.   huart2.Init.BaudRate = 115200;
  291.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  292.   huart2.Init.StopBits = UART_STOPBITS_1;
  293.   huart2.Init.Parity = UART_PARITY_NONE;
  294.   huart2.Init.Mode = UART_MODE_TX_RX;
  295.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  296.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  297.   if (HAL_UART_Init(&huart2) != HAL_OK)
  298.   {
  299.     Error_Handler();
  300.   }
  301.   /* USER CODE BEGIN USART2_Init 2 */
  302.  
  303.   /* USER CODE END USART2_Init 2 */
  304.  
  305. }
  306.  
  307. /**
  308.   * @brief GPIO Initialization Function
  309.   * @param None
  310.   * @retval None
  311.   */
  312. static void MX_GPIO_Init(void)
  313. {
  314.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  315.  
  316.   /* GPIO Ports Clock Enable */
  317.   __HAL_RCC_GPIOC_CLK_ENABLE();
  318.   __HAL_RCC_GPIOD_CLK_ENABLE();
  319.   __HAL_RCC_GPIOA_CLK_ENABLE();
  320.   __HAL_RCC_GPIOB_CLK_ENABLE();
  321.  
  322.   /*Configure GPIO pin Output Level */
  323.   HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  324.  
  325.   /*Configure GPIO pin : B1_Pin */
  326.   GPIO_InitStruct.Pin = B1_Pin;
  327.   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  328.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  329.   HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
  330.  
  331.   /*Configure GPIO pin : LD2_Pin */
  332.   GPIO_InitStruct.Pin = LD2_Pin;
  333.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  334.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  335.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  336.   HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);
  337.  
  338.   /* EXTI interrupt init*/
  339.   HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  340.   HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
  341.  
  342. }
  343.  
  344. /* USER CODE BEGIN 4 */
  345.  
  346. /* USER CODE END 4 */
  347.  
  348. /**
  349.   * @brief  This function is executed in case of error occurrence.
  350.   * @retval None
  351.   */
  352. void Error_Handler(void)
  353. {
  354.   /* USER CODE BEGIN Error_Handler_Debug */
  355.   /* User can add his own implementation to report the HAL error return state */
  356.  
  357.   /* USER CODE END Error_Handler_Debug */
  358. }
  359.  
  360. #ifdef  USE_FULL_ASSERT
  361. /**
  362.   * @brief  Reports the name of the source file and the source line number
  363.   *         where the assert_param error has occurred.
  364.   * @param  file: pointer to the source file name
  365.   * @param  line: assert_param error line source number
  366.   * @retval None
  367.   */
  368. void assert_failed(uint8_t *file, uint32_t line)
  369. {
  370.   /* USER CODE BEGIN 6 */
  371.   /* User can add his own implementation to report the file name and line number,
  372.      tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  373.   /* USER CODE END 6 */
  374. }
  375. #endif /* USE_FULL_ASSERT */
  376.  
  377. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement