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

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

?? ssp_flash_driver.c

?? ST的ARM9芯片STR912的軟件庫函數V2.0
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : ssp_flash_driver.h
* Author             : MCD Application Team
* Version            : V2.0
* Date               : 12/07/2007
* Description        : Driver containing c functions to access to M25P64 ST 
*                      Serial Flash Memory available on MB460 eval board
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "ssp_flash_driver.h"

/* Private typedef -----------------------------------------------------------*/
#define SSP_FLASH_PageSize 256

#define WRITE      0x02  /* Write to Memory instruction */
#define WRSR       0x01  /* Write Status Register instruction */
#define WREN       0x06  /* Write enable instruction */

#define READ       0x03  /* Read from Memory instruction */
#define RDSR       0x05  /* Read Status Register instruction  */
#define SE         0xD8  /* Sector Erase instruction */
#define BE         0xC7  /* Bulk Erase instruction */

#define Low        0x00  /* ChipSelect line low */
#define High       0x01  /* ChipSelect line high */

#define WIP_Flag   0x01  /* Write In Progress (WIP) flag */

#define Dummy_Byte 0xA5

/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
static void SSP_FLASH_ChipSelect(u8 State);
static u8 SSP_FLASH_SendByte(u8 byte);
static void SSP_FLASH_WriteEnable(void);
static void SSP_FLASH_WaitForWriteEnd(void);

/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : SSP_FLASH_Init
* Description    : Initializes the peripherals used by the SPI FLASH driver.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_Init(void)
{
  SSP_InitTypeDef  SSP_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  GPIO_DeInit(GPIO5);
  /* Gonfigure SSP0_CLK, SSP0_MOSI */
  GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
  GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2;
  GPIO_Init(GPIO5, &GPIO_InitStructure);

  /* Gonfigure SSP0_NSS pins */
  GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Type = GPIO_Type_OpenCollector;
  GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt1;
  GPIO_Init(GPIO5, &GPIO_InitStructure);

  /* Gonfigure SSP0_MISO pin GPIO5.6 */
  GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
  GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
  GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
  GPIO_Init(GPIO5, &GPIO_InitStructure);

  /* SSP0 configuration */
  SSP_DeInit(SSP0);
  SSP_InitStructure.SSP_FrameFormat = SSP_FrameFormat_Motorola;
  SSP_InitStructure.SSP_Mode = SSP_Mode_Master;
  SSP_InitStructure.SSP_CPOL = SSP_CPOL_High;
  SSP_InitStructure.SSP_CPHA = SSP_CPHA_2Edge;
  SSP_InitStructure.SSP_DataSize = SSP_DataSize_8b;
  SSP_InitStructure.SSP_ClockRate = 0;
  SSP_InitStructure.SSP_ClockPrescaler = 2;
  SSP_Init(SSP0, &SSP_InitStructure);

  /* SSP0 enable */
  SSP_Cmd(SSP0, ENABLE);
}

/*******************************************************************************
* Function Name  : SSP_FLASH_SectorErase
* Description    : Erases the specified FLASH sector.
* Input          : SectorAddr: address of the sector to erase.
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_SectorErase(u32 SectorAddr)
{
  /* Send write enable instruction */
  SSP_FLASH_WriteEnable();
			
  /* Sector Erase */
  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);		
  /* Send Sector Erase instruction  */
  SSP_FLASH_SendByte(SE);
  /* Send SectorAddr high nibble address byte */
  SSP_FLASH_SendByte((SectorAddr & 0xFF0000) >> 16);
  /* Send SectorAddr medium nibble address byte */
  SSP_FLASH_SendByte((SectorAddr & 0xFF00) >> 8);
  /* Send SectorAddr low nibble address byte */
  SSP_FLASH_SendByte(SectorAddr & 0xFF);
  /* Deselect the FLASH: Chip Select high */
  SSP_FLASH_ChipSelect(High);	

  /* Wait the end of Flash writing */
  SSP_FLASH_WaitForWriteEnd();	
}

/*******************************************************************************
* Function Name  : SSP_FLASH_BulkErase
* Description    : Erases the entire FLASH.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_BulkErase(void)
{ 	
  /* Send write enable instruction */
  SSP_FLASH_WriteEnable();	
	
  /* Bulk Erase */
  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);		
  /* Send Bulk Erase instruction  */
  SSP_FLASH_SendByte(BE);
  /* Deselect the FLASH: Chip Select high */
  SSP_FLASH_ChipSelect(High);	
		
  /* Wait the end of Flash writing */
  SSP_FLASH_WaitForWriteEnd();		
}

/*******************************************************************************
* Function Name  : SSP_FLASH_PageWrite
* Description    : Writes more than one byte to the FLASH with a single WRITE
*                  cycle(Page WRITE sequence). The number of byte can't exceed
*                  the FLASH page size.
* 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,
*                    must be equal or less than "SSP_FLASH_PageSize" value.
* Output         : None
* Return         : None
*******************************************************************************/
void SSP_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite)
{
  /* Enable the write access to the FLASH */
  SSP_FLASH_WriteEnable();		

  /* Select the FLASH: Chip Select low */
  SSP_FLASH_ChipSelect(Low);	
  /* Send "Write to Memory " instruction */
  SSP_FLASH_SendByte(WRITE);	
  /* Send WriteAddr high nibble address byte to write to */
  SSP_FLASH_SendByte((WriteAddr & 0xFF0000) >> 16);
  /* Send WriteAddr medium nibble address byte to write to */
  SSP_FLASH_SendByte((WriteAddr & 0xFF00) >> 8);
  /* Send WriteAddr low nibble address byte to write to */
  SSP_FLASH_SendByte(WriteAddr & 0xFF);

  /* while there is data to be written on the FLASH */
  while(NumByteToWrite--)
  {
    /* Send the current byte */			
    SSP_FLASH_SendByte(*pBuffer); 	

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

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

  /* Wait the end of Flash writing */
  SSP_FLASH_WaitForWriteEnd();	
}

/*******************************************************************************
* Function Name  : SSP_FLASH_BlockWrite
* Description    : Writes block of data to the FLASH. In this function, each
*                  byte is written using Byte 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_BlockWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite)
{
  /* while there is data to be written */
  while(NumByteToWrite--)
  {
    /* Enable the write access to the FLASH */
    SSP_FLASH_WriteEnable();		

    /* Select the FLASH: Chip Select low */
    SSP_FLASH_ChipSelect(Low);	

    /* Send "Write to Memory " instruction */
    SSP_FLASH_SendByte(WRITE);	
    /* Send WriteAddr high nibble address byte to write to */
    SSP_FLASH_SendByte((WriteAddr & 0xFF0000) >> 16);
    /* Send WriteAddr medium nibble address byte to write to */
    SSP_FLASH_SendByte((WriteAddr& 0xFF00) >> 8);
    /* Send WriteAddr low nibble address byte to write to */
    SSP_FLASH_SendByte(WriteAddr & 0xFF);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费在线视频观看| 欧美日韩国产电影| 在线日韩国产精品| 久久久精品一品道一区| 偷拍日韩校园综合在线| 丁香婷婷综合五月| 日韩视频一区二区在线观看| 中文字幕精品一区二区三区精品| 欧美videos中文字幕| 中文久久乱码一区二区| 久久爱另类一区二区小说| 91福利国产精品| 一色桃子久久精品亚洲| 国产一区二区三区在线观看精品| 欧美日产国产精品| 亚洲国产裸拍裸体视频在线观看乱了| 成人性生交大片免费看视频在线| 欧美xxxxxxxxx| 婷婷六月综合亚洲| 欧美日韩精品三区| 亚洲国产视频一区二区| 在线视频一区二区三区| 综合电影一区二区三区 | 1000精品久久久久久久久| 日韩美女视频一区二区 | 亚洲视频 欧洲视频| 国产精品亚洲成人| 久久这里只有精品首页| 麻豆成人久久精品二区三区红| 69av一区二区三区| 日韩影院免费视频| 日韩欧美亚洲国产另类| 欧美aⅴ一区二区三区视频| 91精品中文字幕一区二区三区| 天天综合天天综合色| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲人亚洲人成电影网站色| 91在线观看美女| 一区二区三区加勒比av| 欧美老肥妇做.爰bbww| 青椒成人免费视频| 久久先锋影音av鲁色资源网| 国产成人av一区| 综合久久久久综合| 欧美日韩激情一区二区| 日本sm残虐另类| 国产亚洲欧洲一区高清在线观看| 懂色av中文字幕一区二区三区 | 国产精品区一区二区三| 色播五月激情综合网| 亚洲成人av福利| 久久一区二区三区国产精品| 国产一区美女在线| 最新不卡av在线| 69久久夜色精品国产69蝌蚪网| 蜜臀va亚洲va欧美va天堂| 日本一区二区三区在线观看| 日本福利一区二区| 秋霞午夜av一区二区三区| 欧美国产成人精品| 欧美午夜免费电影| 国内精品国产三级国产a久久| 国产精品国产自产拍高清av王其| 欧美日韩国产影片| 国产99久久久久久免费看农村| 夜夜嗨av一区二区三区四季av| 欧美成人官网二区| 日本道色综合久久| 精品在线亚洲视频| 洋洋av久久久久久久一区| 久久先锋影音av鲁色资源网| 欧洲av在线精品| 国产成人三级在线观看| 亚洲成年人影院| 国产欧美视频一区二区| 在线不卡免费av| 成人免费毛片app| 另类专区欧美蜜桃臀第一页| 亚洲黄一区二区三区| 久久久一区二区三区| 欧美日韩国产精选| 91香蕉视频在线| 国产剧情一区二区| 五月激情综合网| 亚洲乱码中文字幕| 国产三级一区二区| 日韩精品一区二区三区蜜臀 | 丝袜美腿亚洲色图| 亚洲激情图片qvod| 中文字幕在线一区免费| 久久综合九色综合97婷婷| 欧美精品在线一区二区三区| 色94色欧美sute亚洲线路一久| 国产成人免费视频精品含羞草妖精| 日韩国产精品久久久久久亚洲| 亚洲乱码国产乱码精品精可以看 | 欧美吻胸吃奶大尺度电影 | 欧美一级艳片视频免费观看| 在线观看国产91| 91一区二区三区在线观看| 国产精品18久久久久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 日韩主播视频在线| 亚洲成av人在线观看| 一区二区三区免费在线观看| 亚洲乱码日产精品bd| 亚洲欧美自拍偷拍| 中文字幕五月欧美| 亚洲女厕所小便bbb| 中文字幕亚洲不卡| 亚洲女与黑人做爰| 亚洲欧美另类小说| 日韩午夜激情视频| 国产麻豆一精品一av一免费| 午夜伊人狠狠久久| 午夜激情综合网| 亚洲午夜电影网| 五月天久久比比资源色| 日韩电影在线一区| 久草热8精品视频在线观看| 蜜臀av国产精品久久久久| 美女视频黄免费的久久 | 日韩视频免费观看高清在线视频| 欧美日韩www| 欧美在线一二三| 91麻豆精品久久久久蜜臀| 精品国产三级电影在线观看| 国产色91在线| 一区二区高清免费观看影视大全| 午夜精品一区二区三区免费视频 | 免费不卡在线观看| 色欧美日韩亚洲| 欧美乱熟臀69xxxxxx| 精品国产伦一区二区三区观看方式| 久久品道一品道久久精品| 国产清纯白嫩初高生在线观看91 | 欧美va亚洲va香蕉在线| 久久久www免费人成精品| 国产精品成人在线观看| 亚洲国产你懂的| 国产在线精品免费av| 色综合天天综合在线视频| 在线不卡欧美精品一区二区三区| 久久综合资源网| 亚洲人精品午夜| 美女一区二区三区在线观看| 白白色 亚洲乱淫| 8x8x8国产精品| 久久久精品国产免费观看同学| 悠悠色在线精品| 国产原创一区二区三区| 91啪在线观看| 精品久久久久久久久久久久包黑料| 国产精品国产自产拍在线| 免费成人深夜小野草| 91丨九色丨尤物| 精品国产在天天线2019| 亚洲小少妇裸体bbw| 国产成人在线免费| 91精品国产综合久久久久久漫画| 欧美激情一区二区三区不卡 | 成人小视频免费在线观看| 欧美三级蜜桃2在线观看| 国产喷白浆一区二区三区| 日本欧美一区二区在线观看| www.日韩大片| 久久精品亚洲麻豆av一区二区 | 欧美国产欧美综合| 免费在线视频一区| 欧美午夜片在线观看| 中文字幕人成不卡一区| 国内精品久久久久影院色| 这里只有精品免费| 亚洲国产一区二区在线播放| 99国产精品一区| 国产日韩欧美精品一区| 精品一二三四区| 91精品国产综合久久久久久久久久| 亚洲精品va在线观看| 99精品久久免费看蜜臀剧情介绍| 精品国产凹凸成av人网站| 奇米色777欧美一区二区| 欧美日韩在线三级| 亚洲免费在线观看| 成人18视频日本| 国产三级精品三级在线专区| 精品一区二区三区免费播放| 91精品国产日韩91久久久久久| 亚洲国产wwwccc36天堂| 在线区一区二视频| 依依成人综合视频| 色婷婷久久久综合中文字幕| 亚洲人成影院在线观看| 97国产精品videossex| 日韩一区在线免费观看| 成人激情黄色小说| 国产精品久久久久久久裸模| 福利一区在线观看| 国产精品久久看| 91丨porny丨在线|