发新帖我要提问
12
返回列表
打印
[应用相关]

stm32f10x_flash.c中文版

[复制链接]
楼主: functions
手机看帖
扫描二维码
随时随地手机跟帖
21
functions|  楼主 | 2020-2-7 17:41 | 只看该作者 回帖奖励 |倒序浏览
/**
  * @简述  返回 FLASH 用户选择字节的值.
  * @参数  没有
  * @返回  FLASH 用户选择字节的值:IWDG_SW(Bit0), RST_STOP(Bit1) 和 RST_STDBY(Bit2).
  */
uint32_t FLASH_GetUserOptionByte(void)
{
  /* 返回用户选项字节值 */
  return (uint32_t)(FLASH->OBR >> 2);
}

使用特权

评论回复
22
functions|  楼主 | 2020-2-7 17:41 | 只看该作者
/**
  * @简述  返回 FLASH 写保护选择字节寄存器的值.
  * @参数  没有
  * @返回  FLASH 写保护选项字节寄存器值
  */
uint32_t FLASH_GetWriteProtectionOptionByte(void)
{
  /* 返回 FLASH 写保护寄存器值 */
  return (uint32_t)(FLASH->WRPR);
}

使用特权

评论回复
23
functions|  楼主 | 2020-2-7 17:42 | 只看该作者
/**
  * @简述  检查 FLASH 读出保护设置与否.
  * @参数  没有
  * @返回  FLASH 读出保护的状态 (SET 或 RESET)
  */
FlagStatus FLASH_GetReadOutProtectionStatus(void)
{
  FlagStatus readoutstatus = RESET;
  if ((FLASH->OBR & RDPRT_Mask) != (uint32_t)RESET)
  {
    readoutstatus = SET;
  }
  else
  {
    readoutstatus = RESET;
  }
  return readoutstatus;
}

使用特权

评论回复
24
functions|  楼主 | 2020-2-7 17:42 | 只看该作者
/**
  * @简述  检查 FLASH 预取指缓存设置与否.
  * @参数  没有
  * @返回  FLASH 预取缓冲区的状态 (SET 或 RESET).
  */
FlagStatus FLASH_GetPrefetchBufferStatus(void)
{
  FlagStatus bitstatus = RESET;
  if ((FLASH->ACR & ACR_PRFTBS_Mask) != (uint32_t)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  /* 检查 FLASH 预取指缓存设置与否 (SET 或 RESET) */
  return bitstatus;
}

使用特权

评论回复
25
functions|  楼主 | 2020-2-7 17:42 | 只看该作者
/**
  * @简述  使能或者失能指定 FLASH 中断.
  * @参数  FLASH_IT: 待使能或者失能的指定 FLASH 中断源.
  *          这个参数可以是下面值的任意组合:
  *          FLASH_IT_ERROR: FLASH 错误中断源
  *          FLASH_IT_EOP:   FLASH 操作结束中断源
  * @参数  NewState: 指定的 FLASH 中断的新状态.
  *                  这个参数可以是: ENABLE 或 DISABLE.      
  * @返回  没有
  */
void FLASH_ITConfig(uint16_t FLASH_IT, FunctionalState NewState)
{
  /* 检查参数 */
  assert_param(IS_FLASH_IT(FLASH_IT));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  if(NewState != DISABLE)
  {
    /* 使能中断源 */
    FLASH->CR |= FLASH_IT;
  }
  else
  {
    /* 失能中断源 */
    FLASH->CR &= ~(uint32_t)FLASH_IT;
  }
}

使用特权

评论回复
26
functions|  楼主 | 2020-2-7 17:43 | 只看该作者
/**
  * @简述  检查指定的 FLASH 标志位设置与否.
  * @参数  FLASH_FLAG: 需要检查的标志.
  *          这个参数可以是下面的值之一:
  *          FLASH_FLAG_BSY:      FLASH 忙标志           
  *          FLASH_FLAG_PGERR:    FLASH 程序错误标志      
  *          FLASH_FLAG_WRPRTERR: FLASH 页面写保护错误标志   
  *          FLASH_FLAG_EOP:      FLASH 操作结束标志         
  *          FLASH_FLAG_OPTERR:   FLASH 选项字节错误标志   
  * @返回  FLASH_FLAG 的新状态 (SET 或 RESET).
  */
FlagStatus FLASH_GetFlagStatus(uint16_t FLASH_FLAG)
{
  FlagStatus bitstatus = RESET;
  /* 检查参数 */
  assert_param(IS_FLASH_GET_FLAG(FLASH_FLAG)) ;
  if(FLASH_FLAG == FLASH_FLAG_OPTERR)
  {
    if((FLASH->OBR & FLASH_FLAG_OPTERR) != (uint32_t)RESET)
    {
      bitstatus = SET;
    }
    else
    {
      bitstatus = RESET;
    }
  }
  else
  {
   if((FLASH->SR & FLASH_FLAG) != (uint32_t)RESET)
    {
      bitstatus = SET;
    }
    else
    {
      bitstatus = RESET;
    }
  }
  /* 返回 FLASH_FLAG 的新状态 (SET or RESET) */
  return bitstatus;
}

使用特权

评论回复
27
functions|  楼主 | 2020-2-7 17:43 | 只看该作者
/**
  * @简述  清除 FLASH 待处理标志位.
  * @参数  FLASH_FLAG: 需要清除的标志.
  *          这个参数可以是下面值的任意组合:        
  *          FLASH_FLAG_PGERR:    FLASH 程序错误标志      
  *          FLASH_FLAG_WRPRTERR: FLASH W页面写保护错误标志      
  *          FLASH_FLAG_EOP:      FLASH 操作结束的标志         
  * @返回  没有
  */
void FLASH_ClearFlag(uint16_t FLASH_FLAG)
{
  /* 检查参数 */
  assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG)) ;
  /* 清除标志 */
  FLASH->SR = FLASH_FLAG;
}

使用特权

评论回复
28
functions|  楼主 | 2020-2-7 17:43 | 只看该作者
/**
  * @简述  返回 FLASH 状态.
  * @参数  没有
  * @返回  FLASH 状态: 返回值可以是: FLASH_BUSY, FLASH_ERROR_PG,
  *                    FLASH_ERROR_WRP 或 FLASH_COMPLETE
  */
FLASH_Status FLASH_GetStatus(void)
{
  FLASH_Status flashstatus = FLASH_COMPLETE;
  if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY)
  {
    flashstatus = FLASH_BUSY;
  }
  else
  {  
    if((FLASH->SR & FLASH_FLAG_PGERR) != 0)
    {
      flashstatus = FLASH_ERROR_PG;
    }
    else
    {
      if((FLASH->SR & FLASH_FLAG_WRPRTERR) != 0 )
      {
        flashstatus = FLASH_ERROR_WRP;
      }
      else
      {
        flashstatus = FLASH_COMPLETE;
      }
    }
  }
  /* 返回 FLASH 状态 */
  return flashstatus;
}

使用特权

评论回复
29
functions|  楼主 | 2020-2-7 17:43 | 只看该作者
/**
  * @简述  等待一个 Flash 操作来结束或一个 TIMEOUT 事件发生.
  * @参数  Timeout: FLASH 编程超时时间
  * @返回  FLASH Status: 返回值可以是: FLASH_ERROR_PG, FLASH_ERROR_WRP,
  *                      FLASH_COMPLETE 或 FLASH_TIMEOUT.
  */
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)
{
  FLASH_Status status = FLASH_COMPLETE;
  /* 检查 FLASH 状态 */
  status = FLASH_GetStatus();
  /* 等待 FLASH 操作完成或者发生超时 */
  while((status == FLASH_BUSY) && (Timeout != 0x00))
  {
    delay();
    status = FLASH_GetStatus();
    Timeout--;
  }
  if(Timeout == 0x00 )
  {
    status = FLASH_TIMEOUT;
  }
  /* 返回操作状态 */
  return status;
}

使用特权

评论回复
30
functions|  楼主 | 2020-2-7 17:44 | 只看该作者
/**
  * @简述  插入一个延时.
  * @参数  没有
  * @返回  没有
  */
static void delay(void)
{
  __IO uint32_t i = 0;
  for(i = 0xFF; i != 0; i--)
  {
  }
}

使用特权

评论回复
31
functions|  楼主 | 2020-2-7 17:44 | 只看该作者
/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

使用特权

评论回复
32
磨砂| | 2020-3-2 11:33 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
33
晓伍| | 2020-3-2 11:38 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
34
八层楼| | 2020-3-2 11:44 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
35
观海| | 2020-3-2 11:50 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
36
guanjiaer| | 2020-3-2 11:54 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
37
heimaojingzhang| | 2020-3-2 12:01 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
38
keaibukelian| | 2020-3-2 12:12 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则