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

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

?? stm32f10x_flash.c

?? ucos2.86版本結(jié)合STM板極支持包
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
* Description    : Programs a word at a specified address.
* Input          : - Address: specifies the address to be programmed.
*                  - Data: specifies the data to be programmed.
* Output         : None
* Return         : FLASH Status: The returned value can be: FLASH_BUSY, 
*                  FLASH_ERROR_PG or FLASH_ERROR_WRP or FLASH_COMPLETE or 
*                  FLASH_TIMEOUT. 
*******************************************************************************/
FLASH_Status FLASH_ProgramWord(u32 Address, u32 Data)
{
  FLASH_Status status = FLASH_COMPLETE;

  /* Check the parameters */
  assert(IS_FLASH_ADDRESS(Address));

  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(ProgramTimeout);
  
  if(status == FLASH_COMPLETE)
  {
    /* if the previous operation is completed, proceed to program the new first 
    half word */
    FLASH->CR |= CR_PG_Set;
  
    *(vu16*)Address = (u16)Data;

    /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(ProgramTimeout);
 
    if(status == FLASH_COMPLETE)
    {
      /* if the previous operation is completed, proceed to program the new second 
      half word */
      *(vu16*)(Address + 2) = Data >> 16;
    
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);
        
      if(status != FLASH_BUSY)
      {
        /* Disable the PG Bit */
        FLASH->CR &= CR_PG_Reset;
      }
    }
    else
    {
      if (status != FLASH_BUSY)
      {
        /* Disable the PG Bit */
        FLASH->CR &= CR_PG_Reset;
      }
     }
  }
  /* Return the Program Status */
  return status;
}

/*******************************************************************************
* Function Name  : FLASH_ProgramHalfWord
* Description    : Programs a half word at a specified address.
* Input          : - Address: specifies the address to be programmed.
*                  - Data: specifies the data to be programmed.
* Output         : None
* Return         : FLASH Status: The returned value can be: FLASH_BUSY, 
*                  FLASH_ERROR_PG or FLASH_ERROR_WRP or FLASH_COMPLETE or 
*                  FLASH_TIMEOUT. 
*******************************************************************************/
FLASH_Status FLASH_ProgramHalfWord(u32 Address, u16 Data)
{
  FLASH_Status status = FLASH_COMPLETE;

  /* Check the parameters */
  assert(IS_FLASH_ADDRESS(Address));

  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(ProgramTimeout);
  
  if(status == FLASH_COMPLETE)
  {
    /* if the previous operation is completed, proceed to program the new data */
    FLASH->CR |= CR_PG_Set;
  
    *(vu16*)Address = Data;
    /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(ProgramTimeout);

    if(status != FLASH_BUSY)
    {
      /* if the program operation is completed, disable the PG Bit */
      FLASH->CR &= CR_PG_Reset;
    }
  } 
  /* Return the Program Status */
  return status;
}

/*******************************************************************************
* Function Name  : FLASH_ProgramOptionByteData
* Description    : Programs a half word at a specified Option Byte Data address.
* Input          : - Address: specifies the address to be programmed.
*                    This parameter can be 0x1FFFF804 or 0x1FFFF806. 
*                  - Data: specifies the data to be programmed.
* Output         : None
* Return         : FLASH Status: The returned value can be: FLASH_BUSY, 
*                  FLASH_ERROR_PG or FLASH_ERROR_WRP or FLASH_COMPLETE or 
*                  FLASH_TIMEOUT. 
*******************************************************************************/
FLASH_Status FLASH_ProgramOptionByteData(u32 Address, u8 Data)
{
  FLASH_Status status = FLASH_COMPLETE;

  /* Check the parameters */
  assert(IS_OB_DATA_ADDRESS(Address));

  status = FLASH_WaitForLastOperation(ProgramTimeout);

  if(status == FLASH_COMPLETE)
  {
    /* Authorize the small information block programming */
    FLASH->OPTKEYR = FLASH_KEY1;
    FLASH->OPTKEYR = FLASH_KEY2;

    /* Enables the Option Bytes Programming operation */
    FLASH->CR |= CR_OPTPG_Set; 
    *(vu16*)Address = Data;
    
    /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(ProgramTimeout);

    if(status != FLASH_BUSY)
    {
      /* if the program operation is completed, disable the OPTPG Bit */
      FLASH->CR &= CR_OPTPG_Reset;
    }
  }    
  /* Return the Option Byte Data Program Status */
  return status;      
}

/*******************************************************************************
* Function Name  : FLASH_EnableWriteProtection
* Description    : Write protects the desired pages
* Input          : - FLASH_Pages: specifies the address of the pages to be 
*                    write protected. This parameter can be:
*                    - A value between FLASH_WRProt_Pages0to3 and 
*                      FLASH_WRProt_Pages124to127 
*                    - FLASH_WRProt_AllPages
* Output         : None
* Return         : FLASH Status: The returned value can be: FLASH_BUSY, 
*                  FLASH_ERROR_PG or FLASH_ERROR_WRP or FLASH_COMPLETE or 
*                  FLASH_TIMEOUT.
*******************************************************************************/
FLASH_Status FLASH_EnableWriteProtection(u32 FLASH_Pages)
{
  u16 WRP0_Data = 0xFFFF, WRP1_Data = 0xFFFF, WRP2_Data = 0xFFFF, WRP3_Data = 0xFFFF;
  
  FLASH_Status status = FLASH_COMPLETE;
  
  /* Check the parameters */
  assert(IS_FLASH_WRPROT_PAGE(FLASH_Pages));
  
  FLASH_Pages = (u32)(~FLASH_Pages);
  WRP0_Data = (vu16)(FLASH_Pages & WRP0_Mask);
  WRP1_Data = (vu16)((FLASH_Pages & WRP1_Mask) >> 8);
  WRP2_Data = (vu16)((FLASH_Pages & WRP2_Mask) >> 16);
  WRP3_Data = (vu16)((FLASH_Pages & WRP3_Mask) >> 24);
  
  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(ProgramTimeout);
  
  if(status == FLASH_COMPLETE)
  {
    /* Authorizes the small information block programming */
    FLASH->OPTKEYR = FLASH_KEY1;
    FLASH->OPTKEYR = FLASH_KEY2;
    FLASH->CR |= CR_OPTPG_Set;

    if(WRP0_Data != 0xFF)
    {
      OB->WRP0 = WRP0_Data;
      
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);
    }
    if((status == FLASH_COMPLETE) && (WRP1_Data != 0xFF))
    {
      OB->WRP1 = WRP1_Data;
      
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);
    }

    if((status == FLASH_COMPLETE) && (WRP2_Data != 0xFF))
    {
      OB->WRP2 = WRP2_Data;
      
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);
    }
    
    if((status == FLASH_COMPLETE)&& (WRP3_Data != 0xFF))
    {
      OB->WRP3 = WRP3_Data;
     
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);
    }
          
    if(status != FLASH_BUSY)
    {
      /* if the program operation is completed, disable the OPTPG Bit */
      FLASH->CR &= CR_OPTPG_Reset;
    }
  } 
  /* Return the write protection operation Status */
  return status;       
}

/*******************************************************************************
* Function Name  : FLASH_ReadOutProtection
* Description    : Enables or disables the read out protection
* Input          : - Newstate: new state of the ReadOut Protection.
*                    This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : FLASH Status: The returned value can be: FLASH_BUSY, 
*                  FLASH_ERROR_PG or FLASH_ERROR_WRP or FLASH_COMPLETE or 
*                  FLASH_TIMEOUT.
*******************************************************************************/
FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState)
{
  FLASH_Status status = FLASH_COMPLETE;

  /* Check the parameters */
  assert(IS_FUNCTIONAL_STATE(NewState));

  status = FLASH_WaitForLastOperation(EraseTimeout);

  if(status == FLASH_COMPLETE)
  {
    /* Authorizes the small information block programming */
    FLASH->OPTKEYR = FLASH_KEY1;
    FLASH->OPTKEYR = FLASH_KEY2;

    FLASH->CR |= CR_OPTER_Set;
    FLASH->CR |= CR_STRT_Set;

    /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(EraseTimeout);

    if(status == FLASH_COMPLETE)
    {
      /* if the erase operation is completed, disable the OPTER Bit */
      FLASH->CR &= CR_OPTER_Reset;

      /* Enable the Option Bytes Programming operation */
      FLASH->CR |= CR_OPTPG_Set; 

      if(NewState != DISABLE)
      {
        OB->RDP = 0x00;
      }
      else
      {
        OB->RDP = RDP_Key;  
      }

      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(EraseTimeout); 
    
      if(status != FLASH_BUSY)
      {
        /* if the program operation is completed, disable the OPTPG Bit */
        FLASH->CR &= CR_OPTPG_Reset;
      }
    }
    else 
    {
      if(status != FLASH_BUSY)
      {
        /* Disable the OPTER Bit */
        FLASH->CR &= CR_OPTER_Reset;
      }
    }
  }
  /* Return the protection operation Status */
  return status;      
}
  	
/*******************************************************************************
* Function Name  : FLASH_UserOptionByteConfig
* Description    : Programs the FLASH User Option Byte: IWDG_SW / RST_STOP /
*                  RST_STDBY.
* Input          : - OB_IWDG: Selects the IWDG mode
*                     This parameter can be one of the following values:
*                     - OB_IWDG_SW: Software IWDG selected
*                     - OB_IWDG_HW: Hardware IWDG selected
*                  - OB_STOP: Reset event when entering STOP mode.
*                     This parameter can be one of the following values:
*                     - OB_STOP_NoRST: No reset generated when entering in STOP
*                     - OB_STOP_RST: Reset generated when entering in STOP
*                  - OB_STDBY: Reset event when entering Standby mode.
*                    This parameter can be one of the following values:
*                     - OB_STDBY_NoRST: No reset generated when entering in STANDBY

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费一区二区三区| 欧美性高清videossexo| 亚洲美腿欧美偷拍| 精品久久一二三区| 91久久国产最好的精华液| 精品一区二区在线视频| 亚洲永久精品国产| 国产精品对白交换视频| 日韩三级高清在线| 欧美日韩在线直播| 色综合 综合色| 成人中文字幕在线| 精品影院一区二区久久久| 亚洲va国产天堂va久久en| 自拍偷拍欧美激情| 日本一区免费视频| 久久久一区二区三区捆绑**| 欧美一区二区视频观看视频 | 欧美麻豆精品久久久久久| 国产精品一区免费视频| 免费成人在线视频观看| 亚洲成人综合在线| 洋洋av久久久久久久一区| 国产欧美日韩精品在线| 久久久久成人黄色影片| 久久综合资源网| 精品国产乱码久久久久久久 | 色婷婷激情一区二区三区| 国产成人免费高清| 国内精品在线播放| 激情综合一区二区三区| 日日夜夜免费精品| 午夜av区久久| 视频在线观看一区二区三区| 亚洲午夜久久久久久久久电影网 | 青青草国产成人av片免费| 亚洲成人福利片| 日韩制服丝袜先锋影音| 日韩精品一级中文字幕精品视频免费观看 | 成人激情免费视频| 成人妖精视频yjsp地址| 国产成人免费在线观看不卡| 粉嫩一区二区三区性色av| 成人99免费视频| www.欧美日韩| 色婷婷av一区二区三区gif| 91日韩一区二区三区| 日本韩国欧美国产| 欧美日产在线观看| 91精品啪在线观看国产60岁| 日韩免费性生活视频播放| 精品久久人人做人人爽| 国产日韩欧美一区二区三区乱码| 欧美经典一区二区| 中文字幕在线不卡一区二区三区| 亚洲三级在线播放| 婷婷久久综合九色国产成人| 日本欧美加勒比视频| 精品系列免费在线观看| 高清视频一区二区| 91视视频在线直接观看在线看网页在线看| 色综合中文字幕国产 | 国产真实乱对白精彩久久| 国产成人三级在线观看| 色悠悠久久综合| 欧美日韩激情一区二区三区| 精品国免费一区二区三区| 国产精品视频麻豆| 亚洲国产成人高清精品| 加勒比av一区二区| 91麻豆6部合集magnet| 7777精品久久久大香线蕉| 国产欧美一区二区精品久导航 | 91精品国产日韩91久久久久久| 日韩一级片网址| 中文一区一区三区高中清不卡| 一区二区三区不卡视频在线观看| 男人的j进女人的j一区| 成人一区二区三区视频在线观看| 欧美色图在线观看| 久久久精品综合| 亚洲综合在线观看视频| 精品综合久久久久久8888| 一本久久a久久免费精品不卡| 日韩美女视频在线| 一区二区三区在线观看国产| 精品亚洲成av人在线观看| 日本乱码高清不卡字幕| 久久久亚洲午夜电影| 午夜av区久久| 91麻豆精品秘密| 久久中文娱乐网| 午夜欧美视频在线观看| a在线播放不卡| 欧美成人一区二区三区| 亚洲尤物视频在线| 国产 欧美在线| 日韩精品一区二区三区在线播放 | 狠狠色丁香久久婷婷综合_中| 在线免费精品视频| 欧美国产亚洲另类动漫| 美女免费视频一区二区| 色婷婷综合五月| 国产精品美女视频| 精品一区二区av| 欧美精品xxxxbbbb| 一区二区三区av电影| 大白屁股一区二区视频| 精品国产一区二区国模嫣然| 洋洋av久久久久久久一区| 9久草视频在线视频精品| 久久众筹精品私拍模特| 免播放器亚洲一区| 欧美色网站导航| 一区二区三区中文字幕电影| 成人午夜视频免费看| 久久精品视频网| 国产一区高清在线| 欧美哺乳videos| 性做久久久久久免费观看| 色婷婷综合久久| 国产精品成人网| 成人99免费视频| 亚洲欧美自拍偷拍色图| 岛国精品在线播放| 欧美激情一区二区三区蜜桃视频| 国产一区啦啦啦在线观看| 久久亚洲一区二区三区四区| 久久99久久99精品免视看婷婷 | 一区二区三区丝袜| 91在线视频官网| 亚洲丝袜制服诱惑| 91色婷婷久久久久合中文| 亚洲少妇30p| 在线观看av一区二区| 亚洲综合一区在线| 欧美三级欧美一级| 日本不卡高清视频| 精品久久久久久久人人人人传媒 | 日韩高清在线不卡| 欧美一区二区在线看| 日本女优在线视频一区二区| 日韩欧美成人一区| 国产一区二区三区四| 中文字幕av一区二区三区| 99视频有精品| 亚洲一区二区欧美激情| 欧美高清视频一二三区| 看电视剧不卡顿的网站| 久久久三级国产网站| 99久久99久久精品免费观看 | 亚洲一区二区欧美| 6080日韩午夜伦伦午夜伦| 欧美aa在线视频| 日本一区二区三区国色天香| 91伊人久久大香线蕉| 亚洲aaa精品| 欧美精品一区二区三区在线| 国产999精品久久| 亚洲乱码国产乱码精品精可以看| 欧美日韩国产在线观看| 国产在线不卡一区| 亚洲人快播电影网| 欧美放荡的少妇| 国产精品一区二区久久不卡 | 91在线小视频| 日韩在线观看一区二区| 久久精品一区四区| 在线观看国产日韩| 国产在线视频一区二区| 亚洲日本丝袜连裤袜办公室| 欧美一区二区视频在线观看 | 精品国产伦一区二区三区免费| 不卡电影一区二区三区| 视频一区国产视频| 欧美国产一区视频在线观看| 欧美在线看片a免费观看| 国产一区二区视频在线播放| 一区二区三区在线播放| 久久久久免费观看| 欧美午夜视频网站| 国产精品香蕉一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 日韩女优毛片在线| 色呦呦网站一区| 国产黄色成人av| 日本aⅴ亚洲精品中文乱码| 国产精品嫩草99a| 日韩一区二区精品| 91成人免费电影| 国产不卡在线播放| 全部av―极品视觉盛宴亚洲| 成人欧美一区二区三区小说| 日韩三级.com| 欧美日韩美女一区二区| 不卡电影一区二区三区| 国产制服丝袜一区| 免费成人性网站| 性久久久久久久久| 自拍偷拍国产亚洲|