一、STM32CUBEMX配置
1、选择芯片型号:


2、配置时钟源
1、 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
2、 如果使用默认内部时钟(HSI),这一步可以略过;

3、配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

4、代码生成设置

点击GENERATE CODE即可生成MDK-V5工程:

二、在MDK中编写、编译、下载用户代码
1、STM32内部Flash及HAL库API
查看所使用芯片的信息,Flash起始地址为0x08000000,大小为0x00040000(256KB):

STM32L4x1芯片内部的Flash存储器内存分布如下:

STM32L431RCT6的Flash容量是256KB,所以只有Bank1,有128页,每页2KB。
2、解锁/上锁Flash操作
擦除或者写入内部Flash的时候,需要先解锁再操作,操作完毕之后上锁:
HAL_StatusTypeDef HAL_FLASH_Unlock(void);
HAL_StatusTypeDef HAL_FLASH_Lock(void);
3、擦除操作
HAL库中定义了一个Flash初始化结构体,如下:
/**
* @brief FLASH Erase structure definition
*/
typedef struct
{
uint32_t TypeErase; /*!< Mass erase or page erase.
This parameter can be a value of @ref FLASH_Type_Erase */
uint32_t Banks; /*!< Select bank to erase.
This parameter must be a value of @ref FLASH_Banks
(FLASH_BANK_BOTH should be used only for mass erase) */
uint32_t Page; /*!< Initial Flash page to erase when page erase is disabled
This parameter must be a value between 0 and (max number of pages in the bank - 1)
(eg : 255 for 1MB dual bank) */
uint32_t NbPages; /*!< Number of pages to be erased.
This parameter must be a value between 1 and (max number of pages in the bank - value of initial page)*/
} FLASH_EraseInitTypeDef;
3.1 第一个参数TypeErase是参数类型,分为页擦除和块擦除:
/** @defgroup FLASH_Type_Erase FLASH Erase Type
* @{
*/
#define FLASH_TYPEERASE_PAGES ((uint32_t)0x00) /*!<Pages erase only*/
#define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x01) /*!<Flash mass erase activation*/
/**
* @}
*/
3.2 第二个参数Banks是选择需要擦除哪一块:
由参数中
STM32L4系列芯片Flash操作指南

本文详细介绍了如何使用STM32CUBEMX配置STM32L4系列芯片的时钟源和时钟树,以及如何进行Flash的解锁、擦除、写入和读取操作。通过示例代码展示了如何使用HAL库进行Flash的页擦除、数据写入,并提供了实验现象的描述。
最低0.47元/天 解锁文章
1371





