stm32cube mx 生成的main.c都有啥

/* USER CODE BEGIN 标题 */
/**
  ******************************************************************************
  * @file:main.c
  * @brief:主程序体
  ******************************************************************************
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *全是版权相关问题
  *****************************************************************************
  */
/* USER CODE END标题 */

/* include--------------------------------------------------------*/
#include “main.h”

/* 私人 include---------------------------------------------------*/
/* 用户代码 BEGIN inlcude */

/* 用户代码 END inlcude */

/* Private typedef ----------------------------------------------*/
/*用户代码开始PTD */

/*用户代码结束PTD */

/* Private define -----------------------------------------------*/
/*用户代码开始PD */

/*用户代码结束PD */

/* Private macro -------------------------------------------------*/
/*用户代码开始PM */

/*用户代码结束PM */

/*私有变量-------------------------------------------------------*/

/*用户代码开始PV */

/*用户代码结束PV */

/*私人函数原型--------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
/*用户代码开始PFP */

/*用户代码结束PFP */

/*私人用户代码---------------------------------------------------------*/
/*用户代码开始0 */

/*用户代码结束0 */

/**
  * @brief 应用程序入口点
  * @retval int
  */
int main()
{
    /* 用户代码 BEGIN 1 */

    /* 用户代码 END 1 */

    /* MCU Configuration--------------------------------------------------------*/

    /* 重置所有外设 初始化Flash接口与嘀嗒器 */
    HAL_Init();

    /* USER CODE BEGIN Init */

    /* USER CODE END Init */

    /* 配置系统时钟 */
    SystemClock_Config();

    /* USER CODE BEGIN SysInit */

    /* USER CODE END SysInit */

    /* 初始化所有配置的外设 */
    MX_GPIO_Init();
    /* USER CODE BEGIN 2 */

    /* USER CODE END 2 */

    /* 开启无止境循环 */
    /* USER CODE BEGIN WHILE */
    while (1)
    {
        /* USER CODE END WHILE */

        /* USER CODE BEGIN 3 */
    }
    /* USER CODE END 3 */
}

/**
  * @brief 系统时钟配置
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** 初始化 CPU, AHB and APB 总线时钟 
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** 初始化 CPU, AHB and APB 总线时钟 
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief GPIO 初始化
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO 端口时钟使能 */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*GPIO 配置pin 输出 Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6|GPIO_PIN_8, GPIO_PIN_RESET);

  /*分配 GPIO pins : PA6 PA8 */
  GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief 发生错误时执行此功能
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */

  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{ 
  /* USER CODE BEGIN 6 */
  /* 用户可以添加自定义的implementation来报告文件名与行号,
     tex: printf("错误参数值: 文件 %s 行号 %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

你可能感兴趣的:(stm32cube mx 生成的main.c都有啥)