```c#include "main.h"#include "stm32f4xx_hal.h"void SystemClock_Config(void);static void MX_GPIO_Init(void);int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);HAL_Delay(1000);}}void SystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};__HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;RCC_OscInitStruct.PLL.PLLM = 8;RCC_OscInitStruct.PLL.PLLN = 180;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ = 2;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK){Error_Handler();}}void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct = {0};__HAL_RCC_GPIOD_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);}```
在该示例中,我们使用CubeMX配置了GPIOD的引脚12为输出模式,并利用HAL库中的函数实现了一个LED闪烁的功能。通过以上的步骤和示例代码,您可以深入了解STM32 CubeMX进行外设配置和初始化的方法。 CubeMX大大简化了嵌入式项目的初始化工作,并为开发者提供了一个友好的工具,帮助快速进行外设配置和生成代码。希望本文对您有所帮助。嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去。无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全。
某鱼上买估计至少要好几十。二维码详情
(图片来源网络,侵删)
0 评论