亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? stm32l1xx_flash.c

?? STM32+Grlib
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
  * @brief  Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY.
  * @note   - To correctly run this function, the FLASH_OB_Unlock() function
  *           must be called before.
  *         - Call the FLASH_OB_Lock() to disable the flash control register access and the option bytes 
  *          (recommended to protect the FLASH memory against possible unwanted operation)   
  * @param  OB_IWDG: Selects the WDG mode
  *   This parameter can be one of the following values:
  *     @arg OB_IWDG_SW: Software WDG selected
  *     @arg OB_IWDG_HW: Hardware WDG selected
  * @param  OB_STOP: Reset event when entering STOP mode.
  *   This parameter can be one of the following values:
  *     @arg OB_STOP_NoRST: No reset generated when entering in STOP
  *     @arg OB_STOP_RST: Reset generated when entering in STOP
  * @param  OB_STDBY: Reset event when entering Standby mode.
  *   This parameter can be one of the following values:
  *     @arg OB_STDBY_NoRST: No reset generated when entering in STANDBY
  *     @arg OB_STDBY_RST: Reset generated when entering in STANDBY
  * @retval FLASH Status: The returned value can be: 
  * FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
  */
FLASH_Status FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY)
{
  FLASH_Status status = FLASH_COMPLETE; 
  uint32_t tmp = 0, tmp1 = 0;

  /* Check the parameters */
  assert_param(IS_OB_IWDG_SOURCE(OB_IWDG));
  assert_param(IS_OB_STOP_SOURCE(OB_STOP));
  assert_param(IS_OB_STDBY_SOURCE(OB_STDBY));

  /* Get the User Option byte register */
  tmp1 = (FLASH->OBR & 0x000F0000) >> 16;
    
  /* Calculate the user option byte to write */ 
  tmp = (uint32_t)(((uint32_t)~((uint32_t)((uint32_t)(OB_IWDG) | (uint32_t)(OB_STOP) | (uint32_t)(OB_STDBY) | tmp1))) << ((uint32_t)0x10));
  tmp |= ((uint32_t)(OB_IWDG) | ((uint32_t)OB_STOP) | (uint32_t)(OB_STDBY) | tmp1);
  
  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
  
  if(status == FLASH_COMPLETE)
  {  
    /* Write the User Option Byte */              
    OB->USER = tmp; 
  }
  
  /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
       
  /* Return the Option Byte program Status */
  return status;
}

/**
  * @brief  Programs the FLASH brownout reset threshold level Option Byte.
  * @note   - To correctly run this function, the FLASH_OB_Unlock() function
  *           must be called before.
  *         - Call the FLASH_OB_Lock() to disable the flash control register access and the option bytes 
  *          (recommended to protect the FLASH memory against possible unwanted operation)   
  * @param  OB_BOR: Selects the brownout reset threshold level
  *   This parameter can be one of the following values:
  *     @arg OB_BOR_OFF: BOR is disabled at power down, the reset is asserted when the VDD 
  *                      power supply reaches the PDR(Power Down Reset) threshold (1.5V)
  *     @arg OB_BOR_LEVEL1: BOR Reset threshold levels for 1.7V - 1.8V VDD power supply
  *     @arg OB_BOR_LEVEL2: BOR Reset threshold levels for 1.9V - 2.0V VDD power supply
  *     @arg OB_BOR_LEVEL3: BOR Reset threshold levels for 2.3V - 2.4V VDD power supply
  *     @arg OB_BOR_LEVEL4: BOR Reset threshold levels for 2.55V - 2.65V VDD power supply
  *     @arg OB_BOR_LEVEL5: BOR Reset threshold levels for 2.8V - 2.9V VDD power supply
  * @retval FLASH Status: The returned value can be: 
  * FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
  */
FLASH_Status FLASH_OB_BORConfig(uint8_t OB_BOR)
{
  FLASH_Status status = FLASH_COMPLETE;
  uint32_t tmp = 0, tmp1 = 0;

  /* Check the parameters */
  assert_param(IS_OB_BOR_LEVEL(OB_BOR));

  /* Get the User Option byte register */
  tmp1 = (FLASH->OBR & 0x00700000) >> 16;
     
  /* Calculate the option byte to write */
  tmp = (uint32_t)~(OB_BOR | tmp1)<<16;
  tmp |= (OB_BOR | tmp1);
    
  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
  
  if(status == FLASH_COMPLETE)
  {  
    /* Write the BOR Option Byte */            
    OB->USER = tmp; 
  }
  
  /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
        
  /* Return the Option Byte program Status */
  return status;
}

/**
  * @brief  Returns the FLASH User Option Bytes values.
  * @param  None
  * @retval The FLASH User Option Bytes .
  */
uint8_t FLASH_OB_GetUser(void)
{
  /* Return the User Option Byte */
  return (uint8_t)(FLASH->OBR >> 20);
}

/**
  * @brief  Returns the FLASH Write Protection Option Bytes value.
  * @param  None
  * @retval The FLASH Write Protection Option Bytes value
  */
uint32_t FLASH_OB_GetWRP(void)
{
  /* Return the FLASH write protection Register value */
  return (uint32_t)(FLASH->WRPR);
}

/**
  * @brief  Checks whether the FLASH Read out Protection Status is set or not.
  * @param  None
  * @retval FLASH ReadOut Protection Status(SET or RESET)
  */
FlagStatus FLASH_OB_GetRDP(void)
{
  FlagStatus readstatus = RESET;
  
  if ((uint8_t)(FLASH->OBR) != (uint8_t)OB_RDP_Level_0)
  {
    readstatus = SET;
  }
  else
  {
    readstatus = RESET;
  }
  return readstatus;
}

/**
  * @brief  Returns the FLASH BOR level.
  * @param  None
  * @retval The FLASH User Option Bytes .
  */
uint8_t FLASH_OB_GetBOR(void)
{
  /* Return the BOR level */
  return (uint8_t)((FLASH->OBR & (uint32_t)0x000F0000) >> 16);
}

/**
  * @}
  */

/** @defgroup FLASH_Group5 Interrupts and flags management functions
 *  @brief   Interrupts and flags management functions
 *
@verbatim   
 ===============================================================================
                  Interrupts and flags management functions
 ===============================================================================  

@endverbatim
  * @{
  */

/**
  * @brief  Enables or disables the specified FLASH interrupts.
  * @param  FLASH_IT: specifies the FLASH interrupt sources to be enabled or 
  *         disabled.
  *   This parameter can be any combination of the following values:     
  *     @arg FLASH_IT_EOP: FLASH end of programming Interrupt
  *     @arg FLASH_IT_ERR: FLASH Error Interrupt  
  * @retval None 
  */
void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_FLASH_IT(FLASH_IT)); 
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  if(NewState != DISABLE)
  {
    /* Enable the interrupt sources */
    FLASH->PECR |= FLASH_IT;
  }
  else
  {
    /* Disable the interrupt sources */
    FLASH->PECR &= ~(uint32_t)FLASH_IT;
  }
}

/**
  * @brief  Checks whether the specified FLASH flag is set or not.
  * @param  FLASH_FLAG: specifies the FLASH flag to check.
  *   This parameter can be one of the following values:
  *     @arg FLASH_FLAG_BSY: FLASH write/erase operations in progress flag 
  *     @arg FLASH_FLAG_EOP: FLASH End of Operation flag
  *     @arg FLASH_FLAG_READY: FLASH Ready flag after low power mode
  *     @arg FLASH_FLAG_ENDHV: FLASH End of high voltage flag
  *     @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag 
  *     @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
  *     @arg FLASH_FLAG_SIZERR: FLASH size error flag    
  *     @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag         
  * @retval The new state of FLASH_FLAG (SET or RESET).
  */
FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG)
{
  FlagStatus bitstatus = RESET;

  /* Check the parameters */
  assert_param(IS_FLASH_GET_FLAG(FLASH_FLAG));

  if((FLASH->SR & FLASH_FLAG) != (uint32_t)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  /* Return the new state of FLASH_FLAG (SET or RESET) */
  return bitstatus; 
}

/**
  * @brief  Clears the FLASH抯 pending flags.
  * @param  FLASH_FLAG: specifies the FLASH flags to clear.
  *   This parameter can be any combination of the following values:
  *     @arg FLASH_FLAG_EOP: FLASH End of Operation flag
  *     @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag 
  *     @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag 
  *     @arg FLASH_FLAG_SIZERR: FLASH size error flag    
  *     @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag              
  * @retval None
  */
void FLASH_ClearFlag(uint32_t FLASH_FLAG)
{
  /* Check the parameters */
  assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG));
  
  /* Clear the flags */
  FLASH->SR = FLASH_FLAG;
}

/**
  * @brief  Returns the FLASH Status.
  * @param  None
  * @retval FLASH Status: The returned value can be: 
  *   FLASH_BUSY, FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP or 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 & (uint32_t)FLASH_FLAG_WRPERR)!= (uint32_t)0x00)
    { 
      FLASHstatus = FLASH_ERROR_WRP;
    }
    else 
    {
      if((FLASH->SR & (uint32_t)0xFEF0) != (uint32_t)0x00)
      {
        FLASHstatus = FLASH_ERROR_PROGRAM; 
      }
      else
      {
        FLASHstatus = FLASH_COMPLETE;
      }
    }
  }
  /* Return the FLASH Status */
  return FLASHstatus;
}


/**
  * @brief  Waits for a FLASH operation to complete or a TIMEOUT to occur.
  * @param  Timeout: FLASH programming Timeout
  * @retval FLASH Status: The returned value can be: FLASH_BUSY, 
  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
  */
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)
{ 
  FLASH_Status status = FLASH_COMPLETE;
   
  /* Check for the FLASH Status */
  status = FLASH_GetStatus();
  
  /* Wait for a FLASH operation to complete or a TIMEOUT to occur */
  while((status == FLASH_BUSY) && (Timeout != 0x00))
  {
    status = FLASH_GetStatus();
    Timeout--;
  }
  
  if(Timeout == 0x00 )
  {
    status = FLASH_TIMEOUT;
  }
  /* Return the operation status */
  return status;
}

/**
  * @}
  */

/**
  * @}
  */
   
  /**
  * @}
  */ 

/**
  * @}
  */ 

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女人18毛片水真多成人如厕 | 99麻豆久久久国产精品免费优播| 国产精品久久久久四虎| 欧美日韩精品三区| 成人福利视频在线看| 青青青伊人色综合久久| 亚洲精品免费在线| 国产欧美一区二区三区沐欲| 欧美日韩国产高清一区二区| 91影院在线观看| 国产一区二区三区视频在线播放 | 国产电影精品久久禁18| 午夜久久久久久| 亚洲视频一区在线观看| 国产视频不卡一区| 日韩欧美黄色影院| 欧美军同video69gay| 在线一区二区观看| 99国内精品久久| 成人一区在线观看| 国产精品69毛片高清亚洲| 久久成人18免费观看| 亚洲1区2区3区4区| 亚洲一级二级在线| 一区二区三区美女| 亚洲欧美日韩国产成人精品影院| 久久婷婷色综合| 亚洲精品一区二区三区四区高清| 欧美三级韩国三级日本一级| 在线这里只有精品| 日本道色综合久久| 一本大道av伊人久久综合| 99精品一区二区| 不卡电影免费在线播放一区| 成人高清在线视频| 成人av先锋影音| 99久久精品国产导航| va亚洲va日韩不卡在线观看| 粉嫩绯色av一区二区在线观看| 狂野欧美性猛交blacked| 蜜臀av性久久久久av蜜臀妖精| 蜜臀久久99精品久久久久久9| 日本色综合中文字幕| 美女尤物国产一区| 久色婷婷小香蕉久久| 韩国视频一区二区| 国产成人欧美日韩在线电影| 成人一区二区三区中文字幕| 99精品久久只有精品| 91福利区一区二区三区| 欧美日韩和欧美的一区二区| 欧美精品第一页| 日韩三级视频在线观看| 国产女人aaa级久久久级| 中文字幕亚洲不卡| 亚洲综合在线第一页| 午夜视黄欧洲亚洲| 激情伊人五月天久久综合| 国产精一区二区三区| 成人精品电影在线观看| 色先锋资源久久综合| 欧美日韩综合不卡| 精品第一国产综合精品aⅴ| 国产日韩综合av| 亚洲一区在线免费观看| 免费在线观看不卡| 粉嫩一区二区三区在线看| 欧美中文字幕一二三区视频| 日韩色视频在线观看| 国产精品理论片| 午夜久久久影院| 国产91精品欧美| 欧美日韩在线不卡| 国产亚洲欧美中文| 亚洲国产日日夜夜| 国内国产精品久久| 在线亚洲一区观看| 久久久久久久国产精品影院| 亚洲欧美日韩国产手机在线| 日韩成人一级片| 99免费精品在线观看| 欧美一区二区三区四区久久| 亚洲国产激情av| 婷婷综合在线观看| 成人激情免费网站| 91精品国产免费| 亚洲人成小说网站色在线| 日本亚洲电影天堂| 色综合天天综合给合国产| 欧美电影免费观看高清完整版在线观看 | 成人av电影观看| 欧美日韩久久不卡| 国产精品久久久一本精品| 免费久久99精品国产| 色婷婷av一区二区三区大白胸| 精品欧美一区二区久久| 亚洲一区二区三区四区在线观看| 国产福利一区二区| 日韩一区二区电影在线| 亚洲免费观看视频| 国产91在线看| 日韩精品中文字幕在线不卡尤物 | 国产麻豆精品95视频| 欧美日韩一二区| 亚洲视频香蕉人妖| 高清不卡在线观看av| 日韩一区二区三区电影 | 亚洲天堂久久久久久久| 久久国产尿小便嘘嘘尿| 欧美视频日韩视频| 亚洲视频在线一区| 国产成人免费av在线| 精品成人一区二区| 青青草国产成人av片免费| 欧洲av一区二区嗯嗯嗯啊| 中文字幕va一区二区三区| 国产精品亚洲午夜一区二区三区| 欧美一级夜夜爽| 日韩制服丝袜先锋影音| 欧美日韩视频一区二区| 亚洲乱码一区二区三区在线观看| 国产成人精品亚洲午夜麻豆| www欧美成人18+| 久久99精品国产.久久久久久| 欧美高清你懂得| 性做久久久久久久免费看| 欧美性猛交xxxx乱大交退制版| 亚洲欧美国产毛片在线| 99re成人精品视频| 亚洲欧美二区三区| 91美女精品福利| 亚洲欧美一区二区久久| 99久久99久久久精品齐齐| 18欧美亚洲精品| 91丨九色丨蝌蚪丨老版| **网站欧美大片在线观看| 91看片淫黄大片一级| 亚洲欧美色图小说| 日本黄色一区二区| 亚洲综合激情另类小说区| 在线观看国产91| 亚洲第一久久影院| 欧美一级搡bbbb搡bbbb| 青青国产91久久久久久| 精品人在线二区三区| 国产精品影音先锋| 国产精品沙发午睡系列990531| 97精品国产露脸对白| 亚洲乱码一区二区三区在线观看| 在线观看视频一区二区欧美日韩| 亚洲永久免费视频| 欧美一区二区在线不卡| 激情都市一区二区| 欧美激情一区不卡| 色吧成人激情小说| 日日夜夜精品视频天天综合网| 欧美一区二区久久久| 国产乱人伦偷精品视频免下载 | 亚洲丝袜美腿综合| 欧美性极品少妇| 麻豆成人久久精品二区三区小说| 欧美成人激情免费网| 成人一级视频在线观看| 一区二区三区毛片| 日韩精品在线看片z| 成人午夜视频免费看| 亚洲午夜电影在线观看| 精品国产青草久久久久福利| 99国产欧美久久久精品| 午夜精品久久久久久久| 久久先锋影音av鲁色资源网| 91香蕉国产在线观看软件| 日韩高清一区二区| 日本一二三四高清不卡| 欧美日韩国产高清一区二区三区| 国产在线精品国自产拍免费| 悠悠色在线精品| 欧美大片一区二区三区| 91蜜桃网址入口| 精品无人码麻豆乱码1区2区 | 国产精品传媒入口麻豆| 欧美视频在线播放| 国产成人午夜精品5599| 日韩中文字幕麻豆| 综合欧美亚洲日本| 日韩免费视频线观看| 91激情在线视频| 国产一区在线不卡| 丝袜美腿高跟呻吟高潮一区| 亚洲国产成人私人影院tom| 宅男噜噜噜66一区二区66| 成人成人成人在线视频| 久久福利视频一区二区| 一区二区三区在线观看动漫| 久久综合网色—综合色88| 7777精品伊人久久久大香线蕉的| 成人黄色一级视频| 精品一区二区影视| 亚洲亚洲精品在线观看| 国产精品超碰97尤物18|