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

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

?? ymodem.c

?? 《基于MDK的STM32處理器應(yīng)用開發(fā)》例程,本例程包使用STM32 FirmLibrary V1.0
?? C
字號(hào):
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : ymodem.c
* Author             : MCD Application Team
* Date First Issued  : 05/21/2007
* Description        : This file provides all the software functions related to
*                      the ymodem protocol.
********************************************************************************
* History:
* 05/21/2007: V0.1 
********************************************************************************
* 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 "common.h"
#include "stm32f10x_flash.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
u8 file_name[FILE_NAME_LENGTH];
u32 FlashDestination = ApplicationAddress; /* Flash user program offset */
u16 PageSize = 0x400;
u32 EraseCounter = 0x0;
u32 NbrOfPage = 0;
FLASH_Status FLASHStatus = FLASH_COMPLETE;
u32 RamSource;
extern u8 tab_1024[1024];

/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name  : Receive_Byte
* Description    : Receive byte from sender
* Input          : - c: Character
*                  - timeout: Timeout
* Output         : None
* Return         : 0: Byte received
*                  -1: Timeout
*******************************************************************************/
static  s32 Receive_Byte (u8 *c, u32 timeout)
{
  while (timeout-- > 0)
  {
    if (SerialKeyPressed(c) == 1)
    {
      return 0;
    }
  }
  return -1;
}

/*******************************************************************************
* Function Name  : Send_Byte
* Description    : Send a byte
* Input          : - c: Character
* Output         : None
* Return         : 0: Byte sent
*******************************************************************************/
static u32 Send_Byte (u8 c)
{
  SerialPutChar(c);
  return 0;
}

/*******************************************************************************
* Function Name  : Receive_Packet
* Description    : Receive a packet from sender
* Input 1        : - data
* Input 2        : - length
* Input 3        : - timeout
* Output         : *length:
*                  0: end of transmission
*                  -1: abort by sender
*                  >0: packet length
* Return         : 0: normally return
*                  -1: timeout or packet error
*                  1: abort by user
*******************************************************************************/
static s32 Receive_Packet (u8 *data, s32 *length, u32 timeout)
{
  u16 i, packet_size;
  u8 c;
  *length = 0;
  if (Receive_Byte(&c, timeout) != 0)
  {
    return -1;
  }
  switch (c)
  {
  case SOH:
    packet_size = PACKET_SIZE;
    break;
  case STX:
    packet_size = PACKET_1K_SIZE;
    break;
  case EOT:
    return 0;
  case CA:
    if ((Receive_Byte(&c, timeout) == 0) && (c == CA))
    {
      *length = -1;
      return 0;
    }
    else
    {
      return -1;
    }
  case ABORT1:
  case ABORT2:
    return 1;
  default:
    return -1;
  }
  *data = c;
  for (i = 1; i < (packet_size + PACKET_OVERHEAD); i ++)
  {
    if (Receive_Byte(data + i, timeout) != 0)
    {
      return -1;
    }
  }
  if (data[PACKET_SEQNO_INDEX] != ((data[PACKET_SEQNO_COMP_INDEX] ^ 0xff) & 0xff))
  {
    return -1;
  }
  *length = packet_size;
  return 0;
}
/*******************************************************************************
* Function Name  : Ymodem_Receive
* Description    : Receive a file using the ymodem protocol
* Input          : Address of the first byte
* Output         : None
* Return         : The size of the file
*******************************************************************************/
s32 Ymodem_Receive (u8 *buf)
{
  u8 packet_data[PACKET_1K_SIZE + PACKET_OVERHEAD], file_size[FILE_SIZE_LENGTH], *file_ptr, *buf_ptr;
  s32 i, j, packet_length, session_done, file_done, packets_received, errors, session_begin, size = 0;

  for (session_done = 0, errors = 0, session_begin = 0; ;)
  {
    for (packets_received = 0, file_done = 0, buf_ptr = buf; ;)
    {
      switch (Receive_Packet(packet_data, &packet_length, NAK_TIMEOUT))
      {
        case 0:
          errors = 0;
          switch (packet_length)
          {
            /* Abort by sender */
			case - 1:    
              Send_Byte(ACK);
              return 0;
			/* End of transmission */
            case 0:     
              Send_Byte(ACK);
              file_done = 1;
              break;
			/* Normal packet */
            default:    
            if ((packet_data[PACKET_SEQNO_INDEX] & 0xff) != (packets_received & 0xff))
            {
              Send_Byte(NAK);
            }
            else
            {
              if (packets_received == 0)   
              {/* Filename packet */
                if (packet_data[PACKET_HEADER] != 0)    
                {/* Filename packet has valid data */
                  for (i = 0, file_ptr = packet_data + PACKET_HEADER; (*file_ptr != 0) && (i < FILE_NAME_LENGTH);)
                  {
                    file_name[i++] = *file_ptr++;
                  }
                  file_name[i++] = '\0';
                  for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH);)
                  {
                    file_size[i++] = *file_ptr++;
                  }
                  file_size[i++] = '\0';
                  Str2Int(file_size, &size);
                  /* Test the size of the image to be sent */
                  /* Image size is greater than Flash size */
				  if (size > 0x0801FFFF) 
                  {
                    /* End session */
                    Send_Byte(CA);
                    Send_Byte(CA);
                    return -1;
                  }
                  /* Erase the needed pages where the user application will be loaded */
                  /* Define the number of page to be erased */
                  NbrOfPage = FLASH_PagesMask(size);
                  /* Erase the FLASH pages */
                  for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
                  {
                    FLASHStatus = FLASH_ErasePage(FlashDestination + (PageSize * EraseCounter));
                  }
                  Send_Byte(ACK);
                  Send_Byte(CRC16);
                }
				/* Filename packet is empty, end session */
                else   
                {
                  Send_Byte(ACK);
                  file_done = 1;
                  session_done = 1;
                  break;
                }
              }
			  /* Data packet */
              else    
              {
                memcpy(buf_ptr, packet_data + PACKET_HEADER, packet_length);
                RamSource =(u32)buf;
                for (j = 0;(j < packet_length) && (FlashDestination <  ApplicationAddress + size);j += 4)
                {
                  /* Program the data received into STM32F10x Flash */
                  FLASH_ProgramWord(FlashDestination, *(u32*)RamSource);
                  if (*(u32*)FlashDestination != *(u32*)RamSource)
                  {
                    /* End session */
                    Send_Byte(CA);
                    Send_Byte(CA);
                    return -2;
                  }
                  FlashDestination += 4;
                  RamSource += 4;
                }
                Send_Byte(ACK);
              }
              packets_received ++;
              session_begin = 1;
            }
          }
          break;
          case 1:
            Send_Byte(CA);
            Send_Byte(CA);
            return -3;
          default:
          if (session_begin > 0)
          {
            errors ++;
          }
          if (errors > MAX_ERRORS)
          {
            Send_Byte(CA);
            Send_Byte(CA);
            return 0;
          }
          Send_Byte(CRC16);
          break;
      }
      if (file_done != 0)
      {
        break;
      }
    }
    if (session_done != 0)
    {
      break;
    }
  }
  return (s32)size;
}

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一卡二卡| 欧美性极品少妇| 精品中文字幕一区二区| 一区二区三区日韩欧美| 久久久噜噜噜久久中文字幕色伊伊| 国产精品欧美综合在线| 2020日本不卡一区二区视频| 欧美日韩中文字幕一区二区| jlzzjlzz国产精品久久| 国产一区二区成人久久免费影院| 麻豆久久一区二区| 日本中文字幕一区二区有限公司| 亚洲自拍偷拍欧美| 亚洲乱码精品一二三四区日韩在线| 国产欧美一区二区精品久导航 | 欧美一区二区精美| 欧美日韩五月天| 日本道精品一区二区三区| 色综合亚洲欧洲| 欧美无砖砖区免费| 欧美理论片在线| 日韩精品中文字幕在线不卡尤物| 555夜色666亚洲国产免| 日韩欧美中文字幕制服| 久久久久久电影| 国产精品女人毛片| 亚洲欧洲精品一区二区三区| 国产精品国产三级国产有无不卡| 亚洲欧美激情一区二区| 亚洲二区在线视频| 韩国欧美国产1区| 91丨九色porny丨蝌蚪| 欧美日韩精品一区二区天天拍小说 | 亚洲精品videosex极品| 日韩国产欧美在线播放| 国产麻豆成人精品| 色综合久久88色综合天天免费| 欧美精品一卡二卡| 国产偷国产偷精品高清尤物| 一个色综合av| 国产91精品精华液一区二区三区| 在线免费不卡电影| 精品国产精品一区二区夜夜嗨| 国产精品灌醉下药二区| 奇米在线7777在线精品| 成人a区在线观看| 日韩免费视频一区| 亚洲综合小说图片| 91蜜桃在线观看| 精品久久人人做人人爽| 夜夜嗨av一区二区三区四季av| 高清不卡一区二区| 久久综合久久99| 日韩国产欧美一区二区三区| eeuss鲁片一区二区三区| 欧美精品一区二区三区在线播放| 亚洲123区在线观看| 色天使久久综合网天天| 久色婷婷小香蕉久久| 欧美日产在线观看| 亚洲国产一区视频| 在线观看91视频| 亚洲精品精品亚洲| 欧美四级电影在线观看| 亚洲啪啪综合av一区二区三区| voyeur盗摄精品| 一区二区三区高清在线| 99riav一区二区三区| 国产精品电影一区二区| 成人av片在线观看| 亚洲免费在线视频一区 二区| 99久久精品免费看国产免费软件| 亚洲国产激情av| 色综合婷婷久久| 亚洲高清免费观看 | 欧美精品99久久久**| 三级亚洲高清视频| 精品国产伦一区二区三区观看方式 | 亚洲国产aⅴ天堂久久| 欧美精品在线一区二区三区| 裸体在线国模精品偷拍| 精品国产免费一区二区三区四区| 国产成人综合亚洲网站| 亚洲欧美日韩在线| 日韩欧美二区三区| 不卡视频在线看| 日韩国产精品久久久久久亚洲| 欧美成人免费网站| 在线日韩av片| 国产精品正在播放| 丝袜美腿一区二区三区| 国产清纯白嫩初高生在线观看91| 欧洲精品在线观看| 国产在线国偷精品免费看| 亚洲免费av高清| 欧美精品一区男女天堂| 91亚洲大成网污www| 精品一区二区精品| 亚洲夂夂婷婷色拍ww47| 久久久久综合网| 精品国产一区二区国模嫣然| 欧美日韩国产免费| 99精品久久久久久| 国产99精品在线观看| 久久精品免费观看| 亚洲国产精品久久人人爱| 亚洲天堂网中文字| 2021中文字幕一区亚洲| 日韩欧美亚洲国产另类| 欧美人牲a欧美精品| 91麻豆swag| 色就色 综合激情| 成人高清免费在线播放| 国产不卡视频一区二区三区| 精品一区二区精品| 国产一区二区不卡| 国产精品18久久久久久久网站| 一本到高清视频免费精品| 粉嫩av亚洲一区二区图片| 国产.欧美.日韩| 丁香激情综合国产| 一本一道综合狠狠老| 在线免费观看成人短视频| 欧美吻胸吃奶大尺度电影| 欧美视频日韩视频在线观看| 欧美高清性hdvideosex| 日韩一级大片在线| 久久久久久久综合色一本| 国产精品免费视频一区| 亚洲美腿欧美偷拍| 日本中文字幕一区二区视频| 国产米奇在线777精品观看| 国产a久久麻豆| 91免费版pro下载短视频| 欧美精品久久久久久久久老牛影院| 欧美一区二区精品久久911| 国产亚洲欧洲997久久综合| 亚洲免费视频中文字幕| 欧美aaaaaa午夜精品| 99久久伊人久久99| 欧美亚洲国产一区在线观看网站| 777午夜精品视频在线播放| 国产欧美日韩视频一区二区| 亚洲综合色区另类av| 欧美日韩视频一区二区| 中文字幕精品—区二区四季| 亚洲二区视频在线| 成人综合在线视频| 日韩精品一区二区三区视频| 久久99国产精品麻豆| 97久久精品人人爽人人爽蜜臀| 欧美一区日韩一区| 亚洲免费在线观看| 大白屁股一区二区视频| 日韩精品最新网址| 亚洲免费观看在线观看| 精品一区二区三区在线视频| 欧美日韩国产综合久久| 最新不卡av在线| 成人晚上爱看视频| 久久综合av免费| 日韩精品一级中文字幕精品视频免费观看 | 日韩码欧中文字| 日韩精品一二三四| 色吊一区二区三区| 中文字幕亚洲一区二区av在线| 国内久久婷婷综合| 欧美成人国产一区二区| 日本欧美一区二区三区乱码| 91国偷自产一区二区三区成为亚洲经典 | 国产老女人精品毛片久久| 精品成人一区二区三区四区| 五月天国产精品| 91精品午夜视频| 国产又黄又大久久| 国产日韩欧美麻豆| 国产成人精品免费| 国产精品看片你懂得| 91香蕉视频污| 亚洲大片精品永久免费| 制服.丝袜.亚洲.另类.中文| 激情综合色播激情啊| 中文字幕二三区不卡| 91麻豆高清视频| 日本欧美一区二区在线观看| 欧美国产一区在线| 97成人超碰视| 蜜乳av一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲婷婷综合久久一本伊一区| 色偷偷一区二区三区| 国产乱码精品一区二区三区av | 丝袜美腿亚洲综合| 一区二区三区不卡在线观看 | 亚洲人成亚洲人成在线观看图片| 欧美日韩美少妇| 91在线无精精品入口| 国产麻豆精品久久一二三| 午夜伊人狠狠久久| 一区二区三区在线播放|