当前位置:实例文章 » 其他实例» [文章]STM32CUBUMX配置FLASH(W25Q128)--保姆级教程

STM32CUBUMX配置FLASH(W25Q128)--保姆级教程

发布人:shili8 发布时间:2025-02-25 03:17 阅读次数:0

**STM32CubeMX配置FLASH(W25Q128)- 保姆级教程**

**前言**

在使用STM32系列微控制器时,需要配置FLASH存储器以便于程序的烧写和运行。在本文中,我们将一步步地讲解如何使用STM32CubeMX配置FLASH存储器,特别是W25Q128型号。

**环境准备**

* STM32系列微控制器(本例中使用的是STM32F407VG)
* W25Q128型号的FLASH存储器* STM32CubeMX软件(版本3.8或以上)

**步骤一:创建新项目**

1. 打开STM32CubeMX软件,选择“File”菜单中的“New Project”选项。
2. 在弹出的对话框中,选择微控制器类型为STM32F407VG,并选择W25Q128型号的FLASH存储器。
3. 点击“Next”按钮,继续下一步。

**步骤二:配置FLASH**

1. 在“Flash Memory”选项卡中,可以看到W25Q128型号的FLASH存储器已经被自动检测并配置好了。
2. 可以在这里调整FLASH的分区设置,如分区大小、地址等。
3. 点击“OK”按钮,保存当前配置。

**步骤三:生成代码**

1. 在“Project”选项卡中,可以看到已有的代码文件列表。
2. 点击“Generate Code”按钮,开始生成代码。
3. 等待几秒钟,直到代码生成完成。

**步骤四:查看和修改代码**

1. 在“Project”选项卡中,可以找到生成的代码文件,如main.c、stm32f4xx_hal_flash_ex.c等。
2. 可以在这里查看和修改代码,以适应自己的需求。

**示例代码**

以下是使用STM32CubeMX配置FLASH(W25Q128)的示例代码:

c#include "main.h"

void SystemClock_Config(void) {
 RCC_OscInitTypeDef RCC_OscInitStruct;
 RCC_ClkInitTypeDef RCC_ClkInitStructTypeDef;

 __HAL_RCC_PWR_CLK_ENABLE();
 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
 __HAL_RCC_PWR_CLK_DISABLE();

 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
 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 =216;
 RCC_OscInitStruct.PLL.PLLP =2;
 RCC_OscInitStruct.PLL.PLLQ =4;
 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
 Error_Handler();
 }

 RCC_ClkInitStructTypeDef RCC_ClkInit;

 RCC_ClkInit.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
 RCC_ClkInit.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 RCC_ClkInit.AHBSysCLKDiv2 = RCC_SYSCLK_DIV1;
 RCC_ClkInit.APB1CLKDiv2 = RCC_APB1_DIV1;
 RCC_ClkInit.APB2CLKDiv2 = RCC_APB2_DIV1;

 if (HAL_RCC_ClockConfig(&RCC_ClkInit, FLASH_LATENCY_7) != HAL_OK) {
 Error_Handler();
 }
}

void MX_Flash_Init(void) {
 HAL_FLASH_Unlock();

 uint32_t Address =0x08000000;
 uint32_t Size =1024 *1024;

 HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, (uint32_t)0x12345678);

 if (status != HAL_OK) {
 Error_Handler();
 }

 HAL_FLASH_Lock();
}


**总结**

在本文中,我们一步步地讲解了如何使用STM32CubeMX配置FLASH存储器,特别是W25Q128型号。通过这些步骤和示例代码,可以帮助读者更好地理解如何使用STM32系列微控制器的FLASH存储器。

相关标签:
其他信息

其他资源

Top