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

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

?? dfu_mal.c

?? STM32XXXX usb從設備和住設備的應用源代碼
?? C
字號:
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name          : dfu_mal.c
* Author             : MCD Application Team
* Version            : V2.2.0
* Date               : 06/13/2008
* Description        : Generic media access Layer
********************************************************************************
* THE PRESENT FIRMWARE 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 FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "dfu_mal.h"
#include "spi_if.h"
#include "flash_if.h"
#include "nor_if.h"
#include "fsmc_nor.h"
#include "usb_type.h"
#include "usb_lib.h"
#include "usb_desc.h"
#include "platform_config.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
u16 (*pMAL_Init) (void);
u16 (*pMAL_Erase) (u32 SectorAddress);
u16 (*pMAL_Write) (u32 SectorAddress, u32 DataLength);
u8  *(*pMAL_Read)  (u32 SectorAddress, u32 DataLength);
u8  MAL_Buffer[wTransferSize]; /* RAM Buffer for Downloaded Data */
NOR_IDTypeDef NOR_ID;
extern ONE_DESCRIPTOR DFU_String_Descriptor[7];


static const u16  TimingTable[5][2] =
  {
    { 3000 ,  20 }, /* SPI Flash */
    { 1000 ,  25 }, /* NOR Flash M29W128F */
    {  100 , 104 }, /* Internal Flash */
    { 1000 ,  25 }, /* NOR Flash M29W128G */
    { 1000 ,  45 }  /* NOR Flash S29GL128 */
  };

/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : MAL_Init
* Description    : Initializes the Media on the STM32
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
u16 MAL_Init(void)
{

  FLASH_If_Init(); /* Internal Flash */
  SPI_If_Init();   /* SPI Flash */
#ifdef USE_STM3210E_EVAL  /* USE_STM3210B_EVAL */
  NOR_If_Init();  /* NOR Flash */
  FSMC_NOR_ReadID(&NOR_ID);
    
  FSMC_NOR_ReturnToReadMode();

  /* select the alternate descriptor following NOR ID */
  if ((NOR_ID.Manufacturer_Code == 0x01)&&(NOR_ID.Device_Code2 == NOR_S29GL128))
  {
    DFU_String_Descriptor[6].Descriptor = DFU_StringInterface2_3;
  } 
  
  /* select the alternate descriptor following NOR ID */
  if  ((NOR_ID.Manufacturer_Code == 0x20)&&(NOR_ID.Device_Code2 == NOR_M29W128G))
  {
    DFU_String_Descriptor[6].Descriptor = DFU_StringInterface2_2;
  }
#endif
  return MAL_OK;
}

/*******************************************************************************
* Function Name  : MAL_Erase
* Description    : Erase sector
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
u16 MAL_Erase(u32 SectorAddress)
{

  switch (SectorAddress & MAL_MASK)
  {
    case SPI_FLASH_BASE:
      pMAL_Erase = SPI_If_Erase;
      break;

    case INTERNAL_FLASH_BASE:
      pMAL_Erase = FLASH_If_Erase;
      break;
#ifdef USE_STM3210E_EVAL  /* USE_STM3210B_EVAL */
    case NOR_FLASH_BASE:
      pMAL_Erase = NOR_If_Erase;
      break;
#endif
    default:
      return MAL_FAIL;
  }
  return pMAL_Erase(SectorAddress);
}

/*******************************************************************************
* Function Name  : MAL_Write
* Description    : Write sectors
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
u16 MAL_Write (u32 SectorAddress, u32 DataLength)
{

  switch (SectorAddress & MAL_MASK)
  {
    case SPI_FLASH_BASE:
      pMAL_Write = SPI_If_Write;
      break;

    case INTERNAL_FLASH_BASE:
      pMAL_Write = FLASH_If_Write;
      break;
#ifdef USE_STM3210E_EVAL
    case NOR_FLASH_BASE:
      pMAL_Write = NOR_If_Write;
      break;
#endif
    default:
      return MAL_FAIL;
  }
  return pMAL_Write(SectorAddress, DataLength);
}

/*******************************************************************************
* Function Name  : MAL_Read
* Description    : Read sectors
* Input          : None
* Output         : None
* Return         : Buffer pointer
*******************************************************************************/
u8 *MAL_Read (u32 SectorAddress, u32 DataLength)
{

  switch (SectorAddress & MAL_MASK)
  {
    case SPI_FLASH_BASE:
      pMAL_Read = SPI_If_Read;
      break;

    case INTERNAL_FLASH_BASE:
      pMAL_Read = FLASH_If_Read;
      break;
#ifdef USE_STM3210E_EVAL
    case NOR_FLASH_BASE:
      pMAL_Read = NOR_If_Read;
      break;
#endif
    default:
      return 0;
  }
  return pMAL_Read (SectorAddress, DataLength);
}

/*******************************************************************************
* Function Name  : MAL_GetStatus
* Description    : Get status
* Input          : None
* Output         : None
* Return         : Buffer pointer
*******************************************************************************/
u16 MAL_GetStatus(u32 SectorAddress , u8 Cmd, u8 *buffer)
{
  u8 x = (SectorAddress  >> 26) & 0x03 ; /* 0x000000000 --> 0 */
  /* 0x640000000 --> 1 */
  /* 0x080000000 --> 2 */

  u8 y = Cmd & 0x01;

  if ((x == 1) && (NOR_ID.Device_Code2 == NOR_M29W128G)&& (NOR_ID.Manufacturer_Code == 0x20))
  {
    x = 3 ;
  }
  else if((x == 1) && (NOR_ID.Device_Code2 == NOR_S29GL128) && (NOR_ID.Manufacturer_Code == 0x01))
  {
    x = 4 ;
  }  
    
  SET_POLLING_TIMING(TimingTable[x][y]);  /* x: Erase/Write Timing */
  /* y: Media              */
  return MAL_OK;
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久使用方法| 国产在线日韩欧美| 国产精品免费aⅴ片在线观看| 91精品国产综合久久香蕉麻豆| 色综合久久综合| 91丨porny丨户外露出| 色综合视频一区二区三区高清| 成人成人成人在线视频| 成人高清在线视频| 91麻豆国产福利精品| 日本韩国欧美一区| 欧美日韩另类一区| 欧美一区二区大片| 精品国产乱码久久久久久1区2区| 欧美sm美女调教| 久久久久久久久久久久久女国产乱| 欧美一级xxx| 国产亚洲欧美日韩日本| 中文字幕欧美日韩一区| 亚洲人精品午夜| 亚洲超碰97人人做人人爱| 日本亚洲一区二区| 丁香婷婷综合网| 91首页免费视频| 4438x成人网最大色成网站| 精品久久国产字幕高潮| 欧美韩日一区二区三区| 悠悠色在线精品| 另类综合日韩欧美亚洲| 国产激情91久久精品导航| 99久久夜色精品国产网站| 欧美性一二三区| 欧美精品一区二区在线观看| 国产精品久久国产精麻豆99网站| 亚洲高清不卡在线观看| 久久精品理论片| 99精品偷自拍| 精品久久久久久久久久久院品网 | 亚洲精品午夜久久久| 亚洲国产精品自拍| 国产一二三精品| 欧美亚洲精品一区| 国产人成亚洲第一网站在线播放 | 亚洲一区二区三区四区的| 毛片基地黄久久久久久天堂| 99久久久免费精品国产一区二区| 7777精品伊人久久久大香线蕉超级流畅| 久久综合一区二区| 亚洲一区日韩精品中文字幕| 美女脱光内衣内裤视频久久网站| www.亚洲在线| 久久久久久久一区| 亚洲亚洲精品在线观看| 成人午夜av电影| 精品久久人人做人人爽| 午夜精品久久久久久久| www.亚洲激情.com| 久久久蜜桃精品| 免费在线观看精品| 欧美午夜精品一区二区蜜桃| 久久久久久久网| 国产综合色产在线精品| 7878成人国产在线观看| 亚洲一区在线视频观看| 97aⅴ精品视频一二三区| 久久精品视频在线看| 久久www免费人成看片高清| 精品视频全国免费看| 亚洲三级电影全部在线观看高清| 九色|91porny| 亚洲精品在线免费观看视频| 日韩电影在线一区二区| 欧美狂野另类xxxxoooo| 艳妇臀荡乳欲伦亚洲一区| 91社区在线播放| 综合欧美一区二区三区| 成人福利电影精品一区二区在线观看| 亚洲精品一线二线三线| 国产在线视频精品一区| 日韩精品中文字幕在线一区| 九九热在线视频观看这里只有精品| 成人avav影音| 亚洲免费观看高清在线观看| 色嗨嗨av一区二区三区| 亚洲国产精品成人久久综合一区| 国产精品亚洲第一区在线暖暖韩国| 51久久夜色精品国产麻豆| 日韩经典中文字幕一区| 91精品国产色综合久久不卡蜜臀| 午夜精品久久久久| 欧美不卡一区二区| 国产一区 二区 三区一级| 国产日韩欧美电影| 国产91丝袜在线播放九色| 中文一区二区完整视频在线观看| 成人av集中营| 综合色中文字幕| 欧美日韩不卡视频| 国内外成人在线| 国产欧美一二三区| 91国产精品成人| 日本美女一区二区三区视频| 欧美一卡二卡三卡四卡| 国产一二三精品| 亚洲黄一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 精品久久久久久久人人人人传媒 | 国产尤物一区二区在线| 国产精品视频九色porn| 欧美日韩国产一二三| 国产精品中文字幕欧美| 亚洲老妇xxxxxx| 日韩欧美的一区| 91麻豆免费在线观看| 丝袜脚交一区二区| 欧美激情一区在线| 欧美肥胖老妇做爰| 成人理论电影网| 蜜臀精品一区二区三区在线观看 | 一区二区三区毛片| 26uuu国产电影一区二区| 91丨porny丨中文| 国产美女在线精品| 日韩av不卡在线观看| 国产精品家庭影院| 精品国产乱码久久久久久影片| 91福利国产精品| 丁香婷婷综合五月| 极品少妇一区二区| 亚洲自拍另类综合| 国产视频一区二区三区在线观看| 欧美三级在线看| 国产91精品欧美| 国产乱妇无码大片在线观看| 天天综合天天综合色| 亚洲天堂中文字幕| 国产三级精品在线| 日韩精品一区二区三区四区视频| 在线看日韩精品电影| 成人黄色免费短视频| 国产精品一区二区久久精品爱涩| 日本色综合中文字幕| 亚洲一区二区三区四区在线观看| 中文字幕乱码久久午夜不卡| 日韩色在线观看| 日韩免费性生活视频播放| 91免费在线看| 99国产麻豆精品| 成人高清视频在线观看| 福利一区在线观看| 国产九色精品成人porny | 国产成人激情av| 国产一区二区伦理片| 国内精品写真在线观看| 美脚の诱脚舐め脚责91| 香蕉久久夜色精品国产使用方法| 伊人色综合久久天天人手人婷| 国产精品福利电影一区二区三区四区| 亚洲精品在线网站| 国产午夜亚洲精品羞羞网站| 久久九九国产精品| 久久久久亚洲蜜桃| 国产精品天美传媒沈樵| 国产精品不卡一区二区三区| 国产精品福利一区二区三区| 亚洲欧洲99久久| 亚洲成人自拍偷拍| 日本亚洲免费观看| 麻豆91在线观看| 国产成人av网站| 成人av在线资源网站| 99久久精品情趣| 欧美日韩黄视频| 精品久久久久99| 中文字幕日韩av资源站| 亚洲自拍都市欧美小说| 美女被吸乳得到大胸91| 国产精品影音先锋| 91麻豆产精品久久久久久| 欧美日韩二区三区| 精品久久久久久久久久久久包黑料 | 欧美系列在线观看| 日韩欧美激情在线| 国产精品嫩草99a| 亚洲va欧美va国产va天堂影院| 蜜桃精品在线观看| 国产成人精品影视| 欧美视频一区二区三区四区| 日韩欧美在线影院| 中文字幕一区二区三区不卡| 午夜精品一区二区三区三上悠亚| 美女www一区二区| 日本精品一区二区三区高清| 欧美在线视频你懂得| 日韩一区二区三区电影在线观看| 久久综合九色综合97婷婷女人| 亚洲精品成人a在线观看| 美女一区二区三区| 北岛玲一区二区三区四区| 欧美一区二区三区在线观看|