stm32f10x_flash.c中文版

本文档提供了STM32F10x系列微控制器的Flash编程库函数详细说明,包括设置代码延时值、启用或禁用预取缓存、擦除和编程操作等。此外,还涵盖了错误处理、选项字节配置和中断管理等功能。
摘要由CSDN通过智能技术生成

/**
  ******************************************************************************
  * @文件    stm32f10x_flash.c
  * @作者    MCD 应用程序组
  * @版本    V3.1.0
  * @日期    06/19/2009
  * @简述    这个文件 提供所有 FLASH 固件函数.
  * @翻译    ANSON/sweet1985 Email:airanson110@126.com
  * @日期    23/07/2009
  ******************************************************************************
  * @复件
  *
  * 这个固件仅仅是提供给客户作为设计产品而编写程序的参考目的使客户节约时间。由于
  * 客户使用本固件在开发产品编程上产生的结果意法半导体公司不承担任何直接的和间接
  * 的责任,也不承担任何损害而引起的赔偿。
  *
  * <h2><center>&复制; 版权所有 2009 意法半导体公司</center></h2>
  * 翻译版本仅供学习,如与英文原版有出入应以英文原版为准。
  */

/* 包含 ------------------------------------------------------------------*/
#include "stm32f10x_flash.h"

/* 自用类型 --------------------------------------------------------------*/
/* 自用定义 --------------------------------------------------------------*/

/* Flash Access Control Register bits */
#define ACR_LATENCY_Mask         ((uint32_t)0x00000038)
#define ACR_HLFCYA_Mask          ((uint32_t)0xFFFFFFF7)
#define ACR_PRFTBE_Mask          ((uint32_t)0xFFFFFFEF)

/* Flash Access Control Register bits */
#define ACR_PRFTBS_Mask          ((uint32_t)0x00000020)

/* Flash Control Register bits */
#define CR_PG_Set                ((uint32_t)0x00000001)
#define CR_PG_Reset              ((uint32_t)0x00001FFE)
#define CR_PER_Set               ((uint32_t)0x00000002)
#define CR_PER_Reset             ((uint32_t)0x00001FFD)
#define CR_MER_Set               ((uint32_t)0x00000004)
#define CR_MER_Reset             ((uint32_t)0x00001FFB)
#define CR_OPTPG_Set             ((uint32_t)0x00000010)
#define CR_OPTPG_Reset           ((uint32_t)0x00001FEF)
#define CR_OPTER_Set             ((uint32_t)0x00000020)
#define CR_OPTER_Reset           ((uint32_t)0x00001FDF)
#define CR_STRT_Set              ((uint32_t)0x00000040)
#define CR_LOCK_Set              ((uint32_t)0x00000080)

/* FLASH Mask */
#define RDPRT_Mask               ((uint32_t)0x00000002)
#define WRP0_Mask                ((uint32_t)0x000000FF)
#define WRP1_Mask                ((uint32_t)0x0000FF00)
#define WRP2_Mask                ((uint32_t)0x00FF0000)
#define WRP3_Mask                ((uint32_t)0xFF000000)

/* FLASH Keys */
#define RDP_Key                  ((uint16_t)0x00A5)
#define FLASH_KEY1               ((uint32_t)0x45670123)
#define FLASH_KEY2               ((uint32_t)0xCDEF89AB)

/* Delay definition */  
#define EraseTimeout             ((uint32_t)0x00000FFF)
#define ProgramTimeout           ((uint32_t)0x0000000F)

/* 自用宏 -------------------------------------------------------------*/
/* 自用变量 -----------------------------------------------------------*/
/* 自用函数原型 -------------------------------------------------------*/
/* 自用函数 -----------------------------------------------------------*/

/**
  * @简述  设置代码延时值.
  * @参数  FLASH_Latency: 指定的 FLASH 延时值.
  *          这个参数可以是下面的值之一:
  *          FLASH_Latency_0: FLASH 0个延时周期
  *          FLASH_Latency_1: FLASH 1个延时周期
  *          FLASH_Latency_2: FLASH 2个延时周期
  * @返回  没有
  */
void FLASH_SetLatency(uint32_t FLASH_Latency)
{
  uint32_t tmpreg = 0;
  /* 检查参数 */
  assert_param(IS_FLASH_LATENCY(FLASH_Latency));
  /* 读 ACR 寄存器 */
  tmpreg = FLASH->ACR; 
  /* 设置延时值 */
  tmpreg &= ACR_LATENCY_Mask;
  tmpreg |= FLASH_Latency;
  /* 写 ACR 寄存器 */
  FLASH->ACR = tmpreg;
}

/**
  * @简述  使能或者失能 FLASH 半周期访问.
  * @参数  FLASH_HalfCycleAccess: 指定的 FLASH 半周期访问模式.
  *          这个参数可以是下面的值之一:
  *          FLASH_HalfCycleAccess_Enable:  半周期访问使能
  *          FLASH_HalfCycleAccess_Disable: 半周期访问失能
  * @返回  没有
  */
void FLASH_HalfCycleAccessCmd(uint32_t FLASH_HalfCycleAccess)
{
  /* 检查参数 */
  assert_param(IS_FLASH_HALFCYCLEACCESS_STATE(FLASH_HalfCycleAccess));
  /* 使能或者失能半周期访问 */
  FLASH->ACR &= ACR_HLFCYA_Mask;
  FLASH->ACR |= FLASH_HalfCycleAccess;
}

/**
  * @简述  使能或者失能预取缓存.
  * @参数  FLASH_PrefetchBuffer: 指定的预取缓存状态.
  *          这个参数可以是下面的值之一:
  *          FLASH_PrefetchBuffer_Enable:  使能预取指缓存
  *          FLASH_PrefetchBuffer_Disable: 失能预取指缓存
  * @返回  没有
  */
void FLASH_PrefetchBufferCmd(uint32_t FLASH_PrefetchBuffer)
{
  /* 检查参数 */
  assert_param(IS_FLASH_PREFETCHBUFFER_STATE(FLASH_PrefetchBuffer));
  /* 使能或者失能预取缓存 */
  FLASH->ACR &= ACR_PRFTBE_Mask;
  FLASH->ACR |= FLASH_PrefetchBuffer;
}

/**
  * @简述  解锁 FLASH 编写擦除控制器.
  * @参数  没有
  * @返回  没有
  */
void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值