STM32 CubeMX

1. STM CubeMX 下载地址:

CubeMX 的优点就是方便,简单,缺点就是生成的代码体积会大几十kb,会把一些没有用到的东西也配置,编译进工程里面。

         https://www.st.com/en/development-tools/stm32cubemx.html

注意:CubeMX 必须要先安装java 环境,java 安装包下载地址

	 https://www.java.com/zh-CN/download/

在这里插入图片描述

1.1、 CubeMX 下载,点击Get Software ,会自动滑到页面最底端

在这里插入图片描述

1.2、 根据自己电脑的操作系统型号,选择自己想要的CubeMX 版本,点击Get latest

在这里插入图片描述

1.3 弹出来许可证协议,点击ACCEPT,接受

在这里插入图片描述

1.4 点击下载

在这里插入图片描述

1.5、解压安装即可

在这里插入图片描述

1.6、查看自己是否安装成功java 环境,以及java 的版本

1.6.1 win + r 键,输入cmd

在这里插入图片描述

1.6.2、 输入命令:java -version,回车

在这里插入图片描述

1.7 安装HAL 库

在这里插入图片描述

1.8 HAL 库安装成功

在这里插入图片描述

2、 CubeMX 使用

2.1 新建工程

在这里插入图片描述

2.2 选择芯片的型号,点击Start Project

在这里插入图片描述

2.3 系统配置

在这里插入图片描述

2.4 RCC 时钟配置

在这里插入图片描述

2.5 GPIO 配置,单击芯片图片上的引脚,配置GPIO,相当于调用了GPIO_Init 函数

在这里插入图片描述


============================================= 分割线 ======================================================

在这里插入图片描述

2.6 时钟树配置

在这里插入图片描述

2.7 工程配置

在这里插入图片描述

2.8 代码生成配置

在这里插入图片描述

2.9 生成代码后,再打开工程代码,生成的是IAR 文件,需要先下载IAR软件

在这里插入图片描述

2.9.1 IAR软件

在这里插入图片描述

2.10 编译工程代码

在这里插入图片描述

2.11 代码的目录结构,主要由三部分组成

在这里插入图片描述在这里插入图片描述

2.12 生成的工程代码

在这里插入图片描述

3、 代码

main.c

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}
int main(void)
{
  /* USER CODE B
  EGIN 1 */

  /* USER CODE END 1 */

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

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

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

stm32f4xx_hal.c

/**
  * @brief  This function is used to initialize the HAL Library; it must be the first 
  *         instruction to be executed in the main program (before to call any other
  *         HAL function), it performs the following:
  *           Configure the Flash prefetch, instruction and Data caches.
  *           Configures the SysTick to generate an interrupt each 1 millisecond,
  *           which is clocked by the HSI (at this stage, the clock is not yet
  *           configured and thus the system is running from the internal HSI at 16 MHz).
  *           Set NVIC Group Priority to 4.
  *           Calls the HAL_MspInit() callback function defined in user file 
  *           "stm32f4xx_hal_msp.c" to do the global low level hardware initialization 
  *            
  * @note   SysTick is used as time base for the HAL_Delay() function, the application
  *         need to ensure that the SysTick time base is always set to 1 millisecond
  *         to have correct HAL operation.
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_Init(void)
{
  /* Configure Flash prefetch, Instruction cache, Data cache */ 
#if (INSTRUCTION_CACHE_ENABLE != 0U)
  __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
#endif /* INSTRUCTION_CACHE_ENABLE */

#if (DATA_CACHE_ENABLE != 0U)
  __HAL_FLASH_DATA_CACHE_ENABLE();
#endif /* DATA_CACHE_ENABLE */

#if (PREFETCH_ENABLE != 0U)
  __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
#endif /* PREFETCH_ENABLE */

  /* Set Interrupt Group Priority */
  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);

  /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
  HAL_InitTick(TICK_INT_PRIORITY);

  /* Init the low level hardware */
  HAL_MspInit();

  /* Return function status */
  return HAL_OK;
}

gpio.c

void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32CubeMX是一款由STMicroelectronics开发的软件工具,用于配置和生成STM32微控制器的初始化代码。它可以帮助开发人员通过图形化界面来配置微控制器的引脚、时钟、外设以及生成初始化代码的框架。通过使用STM32CubeMX,开发人员可以更快速和方便地开始STM32项目的开发。 在STM32CubeMX中,可以选择不同的外设和功能模块来配置STM32微控制器。其中,ADC外设用于模拟信号的转换和采样,可以用于测量传感器的信号值。DAC外设用于数字信号的转换为模拟信号,可以用于生成模拟输出信号。PWM输出则用于产生脉冲宽度调制信号,常用于控制电机、LED灯等设备。 引用和引用是STM32CubeMX教程中关于ADC和PWM输出的内容,它们介绍了如何在STM32CubeMX中配置和使用这两个外设。通过学习这些教程,开发人员可以了解如何使用STM32CubeMX来配置ADC和PWM输出,并生成相应的初始化代码,从而快速地开始使用这些外设进行开发。 总而言之,STM32CubeMX是一种方便的工具,可以帮助开发人员配置和生成STM32微控制器的初始化代码。通过学习相关教程,开发人员可以掌握如何在STM32CubeMX中配置和使用不同的外设和功能模块,从而更高效地进行STM32项目的开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【STM32】HAL库 STM32CubeMX系列学习教程](https://blog.csdn.net/as480133937/article/details/99935090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值