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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ssp_flash_driver.c

?? ST的ARM9芯片STR912的軟件庫函數V2.0
?? C
?? 第 1 頁 / 共 2 頁
字號:

    /* Send the current byte  */			
    SSP_FLASH_SendByte(*pBuffer); 	

    /* Deselect the FLASH: Chip Select high */
    SSP_FLASH_ChipSelect(High);	

    /* Point to the next byte to be written */
    pBuffer++;

    /* Increment the FLASH's internal address to write to */
    WriteAddr++;
    	
    /* Wait the end of Flash writing */
    SSP_FLASH_WaitForWriteEnd();	
  }		
}

/*******************************************************************************
* Function Name  : SSP_FLASH_BufferWrite
* Description    : Writes block of data to the FLASH. In this function, the
*                  number of WRITE cycles are reduced, using Page WRITE sequence.
* Input          : - pBuffer : pointer to the buffer  containing the data to be
*                    written to the FLASH.
*                  - WriteAddr : FLASH's internal address to write to.
*                  - NumByteToWrite : number of bytes to write to the FLASH.
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite)
{
  u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0;

  Addr = WriteAddr % SSP_FLASH_PageSize;
  count = SSP_FLASH_PageSize - Addr;
  NumOfPage =  NumByteToWrite / SSP_FLASH_PageSize;
  NumOfSingle = NumByteToWrite % SSP_FLASH_PageSize;

  if(Addr == 0) /* WriteAddr is SSP_FLASH_PageSize aligned  */
  {
    if(NumOfPage == 0) /* NumByteToWrite < SSP_FLASH_PageSize */
    {
      SSP_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);
    }
    else /* NumByteToWrite > SSP_FLASH_PageSize */
    {
      while(NumOfPage--)
      {
        SSP_FLASH_PageWrite(pBuffer, WriteAddr, SSP_FLASH_PageSize);
        WriteAddr +=  SSP_FLASH_PageSize;
        pBuffer += SSP_FLASH_PageSize;
      }

      SSP_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);
   }
  }
  else /* WriteAddr is not SSP_FLASH_PageSize aligned  */
  {
    if(NumOfPage== 0) /* NumByteToWrite < SSP_FLASH_PageSize */
    {
      if(NumOfSingle > count) /* (NumByteToWrite + WriteAddr) > SSP_FLASH_PageSize */
      {
      	temp = NumOfSingle - count;
      	
      	SSP_FLASH_PageWrite(pBuffer, WriteAddr, count);
        WriteAddr +=  count;
        pBuffer += count;

        SSP_FLASH_PageWrite(pBuffer, WriteAddr, temp);       	
      }
      else
      {
      	SSP_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);
      }
    }
    else /* NumByteToWrite > SSP_FLASH_PageSize */
    {
      NumByteToWrite -= count;
      NumOfPage =  NumByteToWrite / SSP_FLASH_PageSize;
      NumOfSingle = NumByteToWrite % SSP_FLASH_PageSize;	

      SSP_FLASH_PageWrite(pBuffer, WriteAddr, count);
      WriteAddr +=  count;
      pBuffer += count;

      while(NumOfPage--)
      {
        SSP_FLASH_PageWrite(pBuffer, WriteAddr, SSP_FLASH_PageSize);
        WriteAddr +=  SSP_FLASH_PageSize;
        pBuffer += SSP_FLASH_PageSize;
      }

      if(NumOfSingle != 0)
      {
        SSP_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);
      }
    }
  }      	
}

/*******************************************************************************
* Function Name  : SSP_FLASH_BufferRead
* Description    : Reads a block of data from the FLASH.
* Input          : - pBuffer : pointer to the buffer that receives the data read
*                    from the FLASH.
*                  - ReadAddr : FLASH's internal address to read from.
*                  - NumByteToRead : number of bytes to read from the FLASH.
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead)
{
  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);	

  /* Send "Read from Memory " instruction */
  SSP_FLASH_SendByte(READ);	

  /* Send ReadAddr high nibble address byte to read from */
  SSP_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16);
  /* Send ReadAddr medium nibble address byte to read from */
  SSP_FLASH_SendByte((ReadAddr& 0xFF00) >> 8);
  /* Send ReadAddr low nibble address byte to read from */
  SSP_FLASH_SendByte(ReadAddr & 0xFF);
    	
  while(NumByteToRead--) /* while there is data to be read */
  {
    /* Read a byte from the FLASH */			
    *pBuffer = SSP_FLASH_SendByte(Dummy_Byte);

    /* Point to the next location where the byte read will be saved */
    pBuffer++;
  }	

  /* Deselect the FLASH: Chip Select high */
  SSP_FLASH_ChipSelect(High);		
}

/*******************************************************************************
* Function Name  : SSP_FLASH_ChipSelect
* Description    : Selects or deselects the FLASH.
* Input          : State : level to be applied on the FLASH's ChipSelect pin.
* Output         : None
* Return         : None
*******************************************************************************/
static void SSP_FLASH_ChipSelect(u8 State)
{
  /* Set High or low the chip select line on P57 pin */
  GPIO_WriteBit(GPIO5, GPIO_Pin_7, (BitAction)State);
}

/*******************************************************************************
* Function Name  : SSP_FLASH_SendByte
* Description    : Sends a byte through the SSP interface and return the  byte
*                  received from the SSP bus.
* Input          : byte : byte to send.
* Output         : None
* Return         : The value of the received byte.
*******************************************************************************/
static u8 SSP_FLASH_SendByte(u8 byte)
{
  /* Send byte through the SSP0 peripheral */	
  SSP0->DR = byte;	

  /* Loop while Transmit FIFO is full */
  while(SSP_GetFlagStatus(SSP0, SSP_FLAG_TxFifoEmpty) == RESET);

  /* Loop while Receive FIFO is empty */
  while(SSP_GetFlagStatus(SSP0, SSP_FLAG_RxFifoNotEmpty) == RESET);	

  /* Return the byte read from the SSP bus */
  return(SSP0->DR); 	
}

/*******************************************************************************
* Function Name  : SSP_FLASH_WriteEnable
* Description    : Enables the write access to the FLASH.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
static void SSP_FLASH_WriteEnable(void)
{
  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);	

  /* Send "Write Enable" instruction */
  SSP_FLASH_SendByte(WREN);

  /* Deselect the FLASH: Chip Select high */
  SSP_FLASH_ChipSelect(High);	
}

/*******************************************************************************
* Function Name  : SSP_FLASH_WaitForWriteEnd
* Description    : Polls the status of the Write In Progress (WIP) flag in the
*                  FLASH's status  register  and  loop  until write  opertaion
*                  has completed.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
static void SSP_FLASH_WaitForWriteEnd(void)
{
  u8 FLASH_Status = 0;

  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);
  	
  /* Send "Read Status Register" instruction */
  SSP_FLASH_SendByte(RDSR);

  /* Loop as long as the memory is busy with a write cycle */ 		
  do
  { 	
	
    /* Send a dummy byte to generate the clock needed by the FLASH
    and put the value of the status register in FLASH_Status variable */
    FLASH_Status = SSP_FLASH_SendByte(Dummy_Byte);
																	
  } while((FLASH_Status & WIP_Flag) == SET); /* Write in progress */

  /* Deselect the FLASH: Chip Select high */
  SSP_FLASH_ChipSelect(High);	 	
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线观看一区二区| 国产高清不卡一区| 麻豆成人91精品二区三区| 国产在线国偷精品免费看| www.视频一区| 欧美一级精品在线| 国产精品欧美久久久久无广告| 一区二区三区四区激情| 麻豆91在线观看| heyzo一本久久综合| 欧美喷潮久久久xxxxx| 国产亚洲午夜高清国产拍精品| 亚洲你懂的在线视频| 久久精品国产亚洲aⅴ| www.视频一区| 欧美电影免费观看高清完整版在 | 亚洲福利一二三区| 久久aⅴ国产欧美74aaa| av成人免费在线观看| 91精品一区二区三区久久久久久 | 91影院在线免费观看| 日韩一区二区三区视频在线 | 欧洲av一区二区嗯嗯嗯啊| 日韩欧美亚洲一区二区| 一区二区在线观看视频 | 欧美激情综合网| 日韩国产在线一| 白白色亚洲国产精品| 2欧美一区二区三区在线观看视频| 亚洲精品网站在线观看| 国产电影一区二区三区| 欧美疯狂性受xxxxx喷水图片| 欧美激情一区二区三区在线| 五月天欧美精品| a级精品国产片在线观看| 精品区一区二区| 亚洲电影你懂得| 99国产精品99久久久久久| 精品成人免费观看| 视频一区欧美精品| 色噜噜狠狠成人中文综合| 国产三级精品三级在线专区| 蜜芽一区二区三区| 欧美三级中文字幕在线观看| 中文字幕一区二区5566日韩| 国产精品影视网| 日韩一区二区在线免费观看| 午夜精品福利一区二区三区av| 91网站最新网址| 国产精品天天摸av网| 国产精品一色哟哟哟| 日韩欧美一区二区不卡| 亚洲成a人v欧美综合天堂下载| 99精品一区二区三区| 国产精品天天看| 国产成人av一区| 国产欧美精品区一区二区三区| 久久91精品国产91久久小草| 欧美一区二区三区视频在线观看| 亚洲国产日韩一区二区| 欧美中文字幕不卡| 亚洲黄色免费网站| 色综合久久久久综合体| 亚洲欧美日韩中文字幕一区二区三区 | 91首页免费视频| 中文字幕视频一区| caoporn国产精品| 亚洲欧洲在线观看av| 不卡电影免费在线播放一区| 国产精品麻豆久久久| www.亚洲精品| 亚洲乱码国产乱码精品精98午夜| bt7086福利一区国产| 亚洲欧美日韩一区二区 | 日韩精品色哟哟| 91精品国产一区二区三区| 日本大胆欧美人术艺术动态| 日韩一二在线观看| 精品在线一区二区三区| 久久久综合九色合综国产精品| 国产高清久久久久| 国产精品乱人伦中文| 不卡一二三区首页| 亚洲曰韩产成在线| 欧美日韩国产另类不卡| 麻豆精品视频在线| 久久精品人人做| caoporen国产精品视频| 一区二区三区精密机械公司| 欧美日韩久久久久久| 另类专区欧美蜜桃臀第一页| 久久天堂av综合合色蜜桃网| 成人综合日日夜夜| 亚洲欧美国产三级| 欧美欧美欧美欧美| 国内精品伊人久久久久av一坑 | 成人国产精品免费| 亚洲综合免费观看高清完整版在线 | 国产精品素人一区二区| 色综合久久综合网97色综合| 日韩av中文字幕一区二区三区| 日韩视频免费直播| 欧美电影免费观看高清完整版在 | 欧美高清在线一区| 91丨九色丨尤物| 午夜伊人狠狠久久| 国产夜色精品一区二区av| 91无套直看片红桃| 麻豆精品新av中文字幕| 国产精品国产三级国产普通话蜜臀| 91麻豆蜜桃一区二区三区| 日韩成人一区二区三区在线观看| 久久久美女艺术照精彩视频福利播放| 91在线精品一区二区| 蜜桃视频第一区免费观看| 欧美国产一区在线| 777午夜精品免费视频| 国产成人综合网站| 亚洲第一福利一区| 国产女主播一区| 5566中文字幕一区二区电影| 国产成人精品亚洲777人妖| 亚洲一区在线看| 久久免费的精品国产v∧| 在线观看一区日韩| 国产ts人妖一区二区| 日韩国产在线观看| 亚洲欧美色综合| 26uuu国产日韩综合| 欧美三级在线播放| 播五月开心婷婷综合| 久久99国产精品久久99| 亚洲一区二区av在线| 欧美激情综合在线| 日韩视频在线你懂得| 色综合久久中文综合久久97| 国内精品在线播放| 无码av免费一区二区三区试看 | 欧美性色综合网| 成人自拍视频在线观看| 美女视频一区二区三区| 亚洲永久精品大片| 国产精品午夜免费| 久久综合九色综合97婷婷| 欧美日韩亚洲丝袜制服| 91视视频在线观看入口直接观看www | 欧美丰满高潮xxxx喷水动漫| 91在线高清观看| 国产91在线观看| 九色综合狠狠综合久久| 亚洲国产精品人人做人人爽| 国产精品你懂的| www国产亚洲精品久久麻豆| 欧美日韩精品一区二区三区| 色一区在线观看| 成人av动漫网站| 国产精品乡下勾搭老头1| 久久国产精品72免费观看| 午夜精品久久久久| 亚洲国产人成综合网站| 亚洲私人黄色宅男| 中文字幕日韩一区二区| 国产欧美一区二区精品性色 | 国产精品99久久久久久似苏梦涵 | 久久精品亚洲精品国产欧美kt∨| 欧美一区二区精美| 7799精品视频| 欧美高清视频一二三区 | 久久国产精品一区二区| 免费视频一区二区| 日本亚洲视频在线| 日韩av高清在线观看| 香蕉成人伊视频在线观看| 亚洲国产精品一区二区www | 欧美一级精品大片| 91精品国产一区二区| 欧美一区日本一区韩国一区| 欧美日韩精品一区二区三区四区| 欧美在线免费播放| 欧美精品三级日韩久久| 欧美剧情电影在线观看完整版免费励志电影 | 久久精品一级爱片| 久久亚洲免费视频| 精品日韩在线观看| 久久蜜桃一区二区| 国产日产亚洲精品系列| 欧美激情一区二区在线| 日韩伦理免费电影| 一区二区三区四区蜜桃 | 精品国产一区二区三区久久影院| 日韩三级免费观看| 亚洲精品一区二区在线观看| 久久综合九色综合97婷婷女人| 国产日韩欧美一区二区三区综合| 国产精品久久久久久久久快鸭 | 欧美三片在线视频观看| 8v天堂国产在线一区二区| 精品免费日韩av| 中国色在线观看另类| 艳妇臀荡乳欲伦亚洲一区|