stm32h750vbt6的hal库配置 点亮LED灯
时间: 2024-12-30 14:30:46 浏览: 127
### STM32H750VBT6 使用 HAL 库配置点亮 LED 的方法
#### 准备工作
在开始之前,确保已安装并配置好了必要的开发工具链以及IDE环境。对于STM32系列微控制器而言,通常会选用Keil MDK或是ST官方提供的STM32CubeIDE作为集成开发环境。
#### 初始化项目
创建一个新的基于STM32H750VBT6芯片的新工程,并导入相应的HAL库支持包。这一步骤可以通过STM32CubeMX图形化界面来简化操作过程,在此过程中可以指定时钟设置、启用所需的外设(如GPIO),并且生成初始化代码框架[^1]。
#### GPIO端口配置
针对要控制的LED连接的具体IO引脚进行配置。假设目标LED接到了PC13上,则需修改`main.c`文件内的相应部分:
```c
/* USER CODE BEGIN Includes */
#include "stm32h7xx_hal.h"
/* USER CODE END Includes */
/* Private variables -----------*/
TIM_HandleTypeDef htim2;
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
/* USER CODE END PV */
/* Private function prototypes --*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
while (1)
{
// Toggle PC13 every second.
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(1000);
}
}
/**
* @brief System Clock Configuration
* The system Clock is configured as follow :
* Processador CLK = PLL_MSI = 80 MHz
* SYSCLK = HCLK = PLL_MSI = 80 MHz
* AHBCLK = D1PCLK1 = D1PCLK2 = PPRE1 = PPRE2 = TIMx_CLK = 80 MHz
* ADC & DAC = common to all domains = 400 Mhz / 8 = 50 MHz
* I2Cx = kernel_clk_x / 16 = 80 MHz / 16 = 5 MHz
* USARTx = pclk / 8 = 80 MHz / 8 = 10 MHz
*
* @param None
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Supply configuration update enable
*/
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
/** Configure the main internal regulator output voltage
*/
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 5;
RCC_OscInitStruct.PLL.PLLN = 96;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLQ = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
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_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
}
```
上述代码片段展示了如何通过调用`HAL_GPIO_TogglePin()`函数实现对特定GPIO引脚状态翻转的效果,从而达到使LED闪烁的目的。这里选择了PC13这个常见的测试点用于指示灯显示[^2]。
#### 编译与烧录程序
完成以上编码之后,编译整个工程项目并将产生的二进制文件下载至目标板卡中执行即可观察到预期效果—即所选LED将以每秒一次频率交替明灭变化。
阅读全文
相关推荐


















