wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4267|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

GPIO模擬驅(qū)動(dòng)W25Q16 FLASH源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:46925 發(fā)表于 2019-8-21 15:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
GPIO模擬驅(qū)動(dòng)W25Q16 FLASH
程序代碼應(yīng)用到產(chǎn)品,非常穩(wěn)定

源程序如下:
  1. #include "_cpus.h"
  2. #include "_coms.h"

  3. /*=====================================================================================================================*/

  4. //SPI模式:CPOL=1 CPHA=1  CS Active low
  5. //clock is high when inactive
  6. //Data is valid on clock trailing edge
  7. //不活動(dòng)時(shí),時(shí)鐘為高 也就是數(shù)據(jù)可改變區(qū)
  8. //數(shù)據(jù)在時(shí)鐘后沿有效 數(shù)據(jù)作用點(diǎn)
  9. #define ENTER_CRITICAL()  
  10.       
  11. #define EXIT_CRITICAL()  
  12.                            
  13. #define MOSI PC6
  14. #define SPSCK PC7
  15. #define ADD_EN_WP PC8
  16. #define MISO PC9
  17. #define SS PC10
  18.                            
  19. #define SS_OUT_L  b_hGpioOut(SS,0)
  20. #define SS_OUT_H  b_hGpioOut(SS,1)
  21.                            
  22. #define WP_OUT_L  b_hGpioOut(ADD_EN_WP,0)                           
  23. #define WP_OUT_H  b_hGpioOut(ADD_EN_WP,1)   

  24. #define SPI_CLK   b_hGpioOut(SPSCK,0);b_dNOP();b_dNOP();b_dNOP();b_dNOP();b_dNOP();b_hGpioOut(SPSCK,1);//和EE相位相反
  25. #define Flash_CS_0  b_hGpioOut(SPSCK,1); ENTER_CRITICAL();WP_OUT_H;SS_OUT_L;
  26. #define Flash_CS_1  WP_OUT_L;SS_OUT_H;EXIT_CRITICAL();     b_hGpioOut(SPSCK,0);

  27.                           

  28.   

  29. void b_hExFlashSetChip2NomlPower(void);
  30. extern void b_hExFlashInit(void)
  31. {
  32.      b_hGpioInit(SS,eOUT_PUSH_PULL,1);
  33.      b_hGpioInit(SPSCK,eOUT_PUSH_PULL,0);
  34.      b_hGpioInit(MOSI,eOUT_PUSH_PULL,0);
  35.      b_hGpioInit(MISO,eOUT_PUSH_PULL,0);
  36.      
  37.      b_hGpioInit(ADD_EN_WP,eOUT_PUSH_PULL,0);
  38.      b_hExFlashSetChip2NomlPower();
  39. }


  40. /*****************************************************************
  41. ** function name  :         SPISendByte
  42. ** description    :  SPI1 send one byte
  43. ** input parameter:  byte to be sent
  44. ** return         :         byte received
  45. ******************************************************************/
  46. static uint08_t ExFlash_hSendByte(uint08_t b)
  47. {
  48.      //時(shí)鐘低到高輸出,高到低輸入
  49.      //將b寫到ee中,返回?cái)?shù)據(jù)寫到f中
  50.      uint8_t i,f;
  51.      f=0;   
  52.      // b_hGpioOut(SS,0);
  53.      //SPI_SDI_DDR = IOisIN;

  54.      b_hGpioInit(MISO,eIN_PULL_UP,0);
  55.      
  56.      //h_bGpioInit(SPSCK,eOUT_PUSH_PULL,0);
  57.      //h_bGpioInit(MOSI,eOUT_PUSH_PULL,0);
  58.      //SPI_SDI_UP=1; SPI_SCK_UP=1; SPI_SDO_UP=1;
  59.      for(i=8;i;i--)
  60.      {
  61.        //TicksDelayMs(1);
  62.        if(b&bit7){
  63.          // SPI_SDO_ODR=1;        /*向ee寫1輸出1p4.3*/   
  64.          b_hGpioOut(MOSI,1);
  65.        }else{       
  66.          //SPI_SDO_ODR=0;          /*向ee寫0*/
  67.          b_hGpioOut(MOSI,0);
  68.        }
  69.           SPI_CLK;         
  70. //       b_hGpioOut(SPSCK,0);              //低到高跳變時(shí)鐘
  71. //       TicksDelayMs(1);
  72. //       b_hGpioOut(SPSCK,1);
  73. //       TicksDelayMs(1);
  74.           b<<=1;
  75.           f<<=1;
  76.           if(b_hGpioRead(MISO))f|=bit0;     /*接收數(shù)據(jù)*/
  77.      }
  78.     // SPI_SDO_UP=0; SPI_SCK_UP=0;SPI_SDI_DDR = IOisOUT;SPI_SDI_ODR= IOisLOW;SPI_SDI_UP=0;
  79.      b_hGpioInit(MISO,eOUT_PUSH_PULL,0);

  80.      //b_hGpioOut(SS,1);
  81.      return f;
  82. }

  83. /*****************************************************************
  84. ** function name  :         SPIReceiveByte
  85. ** description    :  SPI1 receive byte
  86. ** input parameter:  none
  87. ** return         :         byte received
  88. ******************************************************************/
  89. static uint08_t ExFlash_hReceiveByte(void)
  90. {
  91.      uint8_t i,f, b=0xff;;
  92.      f=0;   
  93.     // b_hGpioOut(SS,0);
  94.     // SPI_SDI_DDR = IOisIN;        SPI_SDI_UP=1; SPI_SCK_UP=1; SPI_SDO_UP=1;

  95.       b_hGpioInit(MISO,eIN_PULL_UP,0);
  96.      
  97.      for(i=8;i;i--)
  98.      {
  99.           if(b&bit7)
  100.               b_hGpioOut(MOSI,1);   
  101.           else       
  102.                b_hGpioOut(MOSI,0);
  103.            SPI_CLK;  
  104. //          b_hGpioOut(SPSCK,0);
  105. //          TicksDelayMs(1);
  106. //          b_hGpioOut(SPSCK,1);
  107. //          TicksDelayMs(1);
  108.           b<<=1;
  109.           f<<=1;
  110.           if(b_hGpioRead(MISO))f|=bit0;   
  111.      }
  112.       b_hGpioInit(MISO,eOUT_PUSH_PULL,0);

  113.     // b_hGpioOut(SS,1);
  114.      return f;
  115. }

  116. /******************************************
  117. ** 函 數(shù) 名:WriteEnable
  118. ** 功能描述:寫使能
  119. ** 參    數(shù):無(wú)
  120. ** 返    回:無(wú)
  121. *******************************************/
  122. static void ExFlash_hWriteEnable(void)
  123. {
  124.      
  125.      Flash_CS_0;                     
  126.      ExFlash_hSendByte(0x06);//寫使能
  127.      Flash_CS_1;

  128. }

  129. static void ExFlash_hWriteDisable( void )
  130. {
  131.      Flash_CS_0;                     
  132.      ExFlash_hSendByte(0x04);//寫禁能
  133.      Flash_CS_1;
  134. }


  135. /******************************************************************************/
  136. /* 函數(shù)名稱:uint8 check_flash_busy(void)                                     */
  137. /* 功能描述:檢查flash是否忙                                                  */
  138. /* 參數(shù)說(shuō)明:無(wú)                                                               */
  139. /* 參數(shù)返回: 如果忙返回1,不忙返回0                                           */
  140. /******************************************************************************/
  141. extern uint08_t b_hExFlashCheckBusy(void)
  142. {
  143.      uint08_t busy_flag;
  144.      Flash_CS_0;
  145.      ExFlash_hSendByte(0x05);
  146.      busy_flag=ExFlash_hReceiveByte();
  147.      Flash_CS_1;                          
  148.      if(busy_flag & 0x03)
  149.           busy_flag = 1;
  150.      else
  151.           busy_flag = 0;
  152.      
  153.      return busy_flag;              
  154. }


  155. extern uint16_t ExFlash_hReadStateReg1_2( void )
  156. {
  157.      uint16_t temp_state;
  158.      
  159.      Flash_CS_0;  
  160.      temp_state=ExFlash_hSendByte(0x05);
  161.      temp_state=temp_state<<8;
  162.      temp_state=temp_state+ExFlash_hSendByte(0x35);
  163.      Flash_CS_1;
  164.      
  165.      return temp_state;
  166.      
  167. }

  168. extern void ExFlash_hWriteStateReg1_2( uint08_t highS,uint08_t lowS)
  169. {
  170.       
  171.      ExFlash_hWriteEnable();
  172.      Flash_CS_0;
  173.      ExFlash_hSendByte(0x01);//send write state regster cmd
  174.      ExFlash_hSendByte(lowS);
  175.      ExFlash_hSendByte(highS);
  176.      Flash_CS_1;
  177.      ExFlash_hWriteDisable();
  178.      
  179. }

  180. /******************************************************************************
  181. ** 函 數(shù) 名:ExFlash_hPageProgram                              
  182. ** 功能描述: 向指定的地址寫入指定數(shù)量的字節(jié)                                                                 
  183. ** 參    數(shù):數(shù)據(jù)緩沖區(qū),字節(jié)數(shù),FLASH起始地址                             
  184. ** 返    回:無(wú)                       
  185. ******************************************************************************/
  186. extern void ExFlash_hFlashProgram(uint08_t *databuffer,uint32_t address,uint32_t datasize)
  187. {
  188.      ExFlash_hWriteEnable();                                                //寫使能
  189.      Flash_CS_0;                                              //置cs低選中
  190.      ExFlash_hSendByte(0x02);
  191.      ExFlash_hSendByte((uint08_t)(address>>16));
  192.      ExFlash_hSendByte((uint08_t)(address>>8));
  193.      ExFlash_hSendByte((uint08_t)address);
  194.      while(datasize>0)
  195.      {
  196.           ExFlash_hSendByte(*databuffer);
  197.           databuffer++;
  198.           datasize--;
  199.      }
  200.      Flash_CS_1;                                              //置cs高不選中
  201.      while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  202.      
  203. }

  204. /********************************************
  205. **函 數(shù) 名:ReadUniqueID
  206. **功能描述:讀取芯片唯一ID號(hào),總共8字節(jié)
  207. **參    數(shù):數(shù)據(jù)緩沖區(qū)
  208. *********************************************/
  209. extern void ExFlash_hReadUniqueID(uint08_t *databuffer)
  210. {
  211.      uint08_t i;
  212.      // EnterNoInt();
  213.      Flash_CS_0;                     //置cs低選中
  214.      ExFlash_hSendByte(0x4B);
  215.      ExFlash_hSendByte(0xff);     //這里發(fā)送的三個(gè)字節(jié)是任意的,不一定是0xff
  216.      ExFlash_hSendByte(0xff);
  217.      ExFlash_hSendByte(0xff);
  218.      ExFlash_hSendByte(0xff);
  219.      for(i=0;i<8;i++)
  220.      {
  221.           *databuffer=ExFlash_hReceiveByte();
  222.           databuffer++;
  223.      }
  224.      Flash_CS_1;
  225.      // ExitNoInt();
  226. }


  227. /********************************************************
  228. ** 函 數(shù) 名:SectorErase
  229. ** 功能描述:扇區(qū)擦除
  230. ** 參    數(shù):扇區(qū)地址
  231. ** 返    回:無(wú)  
  232. *********************************************************/
  233. void ExFlash_hSector4KErase(uint32_t sector4kN)
  234. {
  235.      //  b_dDI();
  236.      sector4kN*=4096;
  237.      ExFlash_hWriteEnable();                                                //寫使能
  238.      Flash_CS_0;                                              //置cs低選中
  239.      ExFlash_hSendByte(0x20);
  240.      ExFlash_hSendByte((uint08_t)(sector4kN>>16));
  241.      ExFlash_hSendByte((uint08_t)(sector4kN>>8));
  242.      ExFlash_hSendByte((uint08_t)sector4kN);
  243.      Flash_CS_1;                                              //置cs高不選中
  244.      //  while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  245.      //  EI;
  246. }     

  247. extern void b_hExFlashSector4KEraseAddr(uint32_t sectorAddr)
  248. {
  249.      //b_dDI();
  250.      ExFlash_hWriteEnable();                                                //寫使能
  251.      Flash_CS_0;                                              //置cs低選中
  252.      ExFlash_hSendByte(0x20);
  253.      ExFlash_hSendByte((uint08_t)(sectorAddr>>16));
  254.      ExFlash_hSendByte((uint08_t)(sectorAddr>>8));
  255.      ExFlash_hSendByte((uint08_t)sectorAddr);
  256.      Flash_CS_1;                                              //置cs高不選中
  257.      //while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  258.      // EI;
  259. }   

  260. void ExFlash_hBlock32KErase(uint32_t sector32kN)
  261. {
  262.      //   b_dDI();
  263.      sector32kN*=131072;
  264.      ExFlash_hWriteEnable();                                //寫使能
  265.      Flash_CS_0;                                              //置cs低選中
  266.      ExFlash_hSendByte(0x52);
  267.      ExFlash_hSendByte((uint08_t)(sector32kN>>16));
  268.      ExFlash_hSendByte((uint08_t)(sector32kN>>8));
  269.      ExFlash_hSendByte((uint08_t)sector32kN);
  270.      Flash_CS_1;                                              //置cs高不選中
  271.      //   while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  272.      //   EI;
  273. }

  274. void ExFlash_hBlock64KErase(uint32_t address)
  275. {
  276.      //     b_dDI();
  277.      ExFlash_hWriteEnable();                                                //寫使能
  278.      Flash_CS_0;                                              //置cs低選中
  279.      ExFlash_hSendByte(0xD8);
  280.      ExFlash_hSendByte((uint08_t)(address>>16));
  281.      ExFlash_hSendByte((uint08_t)(address>>8));
  282.      ExFlash_hSendByte((uint08_t)address);
  283.      Flash_CS_1;                                              //置cs高不選中
  284.      //   while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  285.      //   EI;
  286. }

  287. void ExFlash_hAllChipErase(void)
  288. {
  289.      //    b_dDI();
  290.      ExFlash_hWriteEnable();                                                //寫使能
  291.      Flash_CS_0;                                              //置cs低選中
  292.      ExFlash_hSendByte(0xC7);
  293.      Flash_CS_1;                                              //置cs高不選中
  294.      //  while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  295.      //  EI;
  296. }

  297. extern void b_hExFlashSetChip2LowPower(void)
  298. {
  299.      //   b_dDI();
  300.      ExFlash_hWriteEnable();                                                //寫使能
  301.      Flash_CS_0;                                              //置cs低選中
  302.      ExFlash_hSendByte(0xB9);
  303.      Flash_CS_1;                                              //置cs高不選中
  304.      //   while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  305.      //   EI;
  306. }

  307. extern void ExFlash_hSetChip2HighPower(void)
  308. {
  309.      //   b_dDI();
  310.      ExFlash_hWriteEnable();                                                //寫使能
  311.      Flash_CS_0;                                              //置cs低選中
  312.      ExFlash_hSendByte(0xA3);
  313.      Flash_CS_1;                                              //置cs高不選中
  314.      //   while(b_hExFlashCheckBusy());                       //等待器件寫完結(jié)束
  315.      //   EI;
  316. }

  317. void b_hExFlashSetChip2NomlPower(void)
  318. {
  319.      ExFlash_hWriteEnable();                                                //寫使能
  320.      Flash_CS_0;                                              //置cs低選中
  321.      ExFlash_hSendByte(0xAB);
  322.      Flash_CS_1;                                              //置cs高不選中
  323.      ExFlash_hWriteDisable();
  324.     // while(b_hExFlashCheckBusy());//FDW去掉的
  325.      //  EI;
  326. }
  327. /*****************************************************************
  328. ** 函 數(shù) 名:ReadRFlash
  329. ** 功能描述:從指定的地址讀取指定數(shù)量的字節(jié)
  330. ** 參    數(shù):數(shù)據(jù)緩沖區(qū),字節(jié)數(shù),起始地址
  331. ** 返    回:無(wú)
  332. ******************************************************************/
  333. extern void b_hExFlashRead(uint08_t *databuffer,uint32_t address,uint16_t datasize)
  334. {   
  335.      uint16_t i;
  336.      //    b_dDI();
  337.      //while( b_hExFlashCheckBusy());
  338.      Flash_CS_0;
  339.      ExFlash_hSendByte(0x03);
  340.      ExFlash_hSendByte((uint08_t)(address>>16));
  341.      ExFlash_hSendByte((uint08_t)(address>>8));
  342.      ExFlash_hSendByte((uint08_t)address);  
  343.      for(i=0;i<datasize;i++)
  344.      {
  345.           databuffer[i]=ExFlash_hReceiveByte();
  346.      }  
  347.      Flash_CS_1;                 //置cs高不選中
  348.      //    EI;
  349. }   

  350. /**************************************************************************
  351. ** 函數(shù)名:CheckData
  352. ** 功能描述:檢驗(yàn)指定的Flash起始地址的數(shù)據(jù)和指定的緩沖區(qū)的數(shù)據(jù)是否全部相等
  353. ** 參數(shù):數(shù)據(jù)緩沖區(qū)DataBuffer, Flash起始地址DataAddr,數(shù)據(jù)字節(jié)數(shù)
  354. ** 返回:全部相同返回1,否則返回0
  355. ***************************************************************************/
  356. extern uint8_t ExFlash_hCheckData(uint08_t *DataBuffer, uint32_t DataAddr, uint16_t DataSize)
  357. {
  358.      uint08_t data;
  359.      uint16_t i;
  360.      for(i=0;i<DataSize;i++)
  361.      {
  362.           b_hExFlashRead(&data,1,DataAddr+i);
  363.           if(data!=DataBuffer[i])return 0;
  364.      }
  365.      return 1;
  366. }



  367. //extern void ExFlash_mWDataToSector(uint08_t *pDataBuffer,uint16_t dataSize, uint08_t sector)
  368. //{
  369. //  
  370. //      uint08_t
  371. //      for(uint16_t i=0;i<dataSize;i++)//校驗(yàn)數(shù)據(jù)
  372. //      {
  373. //              if(SPI_FLASH_BUF[secoff+i]!=0XFF)break;//需要擦除            
  374. //      }
  375. //}
  376. //無(wú)檢驗(yàn)寫SPI FLASH
  377. //必須確保所寫的地址范圍內(nèi)的數(shù)據(jù)全部為0XFF,否則在非0XFF處寫入的數(shù)據(jù)將失敗!
  378. //具有自動(dòng)換頁(yè)功能
  379. //在指定地址開(kāi)始寫入指定長(zhǎng)度的數(shù)據(jù),但是要確保地址不越界!
  380. //pBuffer:數(shù)據(jù)存儲(chǔ)區(qū)
  381. //WriteAddr:開(kāi)始寫入的地址(24bit)
  382. //NumByteToWrite:要寫入的字節(jié)數(shù)(最大65535)
  383. //CHECK OK
  384. extern void ExFlash_hWriteMustErase(uint08_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)   
  385. {                                           
  386.      uint16_t pageremain;          
  387.      pageremain=256-WriteAddr%256; //單頁(yè)剩余的字節(jié)數(shù)                             
  388.      if(NumByteToWrite<=pageremain)pageremain=NumByteToWrite;//不大于256個(gè)字節(jié)
  389.      while(1)
  390.      {         
  391.           ExFlash_hFlashProgram(pBuffer,WriteAddr,pageremain);
  392.           if(NumByteToWrite==pageremain)break;//寫入結(jié)束了
  393.           else //NumByteToWrite>pageremain
  394.           {
  395.                pBuffer+=pageremain;
  396.                WriteAddr+=pageremain;       
  397.                
  398.                NumByteToWrite-=pageremain;                          //減去已經(jīng)寫入了的字節(jié)數(shù)
  399.                if(NumByteToWrite>256)pageremain=256; //一次可以寫入256個(gè)字節(jié)
  400.                else pageremain=NumByteToWrite;           //不夠256個(gè)字節(jié)了
  401.           }
  402.      };            
  403. }

  404. //寫SPI FLASH  
  405. //在指定地址開(kāi)始寫入指定長(zhǎng)度的數(shù)據(jù)
  406. //該函數(shù)帶擦除操作!
  407. //pBuffer:數(shù)據(jù)存儲(chǔ)區(qū)
  408. //WriteAddr:開(kāi)始寫入的地址(24bit)
  409. //NumByteToWrite:要寫入的字節(jié)數(shù)(最大65535)                    


  410. //屏敝注解掉此隨機(jī)寫SPI_FLASH函數(shù),
  411. //原因:資源消耗大--需要棧空間要調(diào)設(shè)到  4096+0x200  測(cè)試時(shí)用的是 0x2200的?臻g
  412. //void ExFlash_hWrite(uint08_t *pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)   
  413. //{
  414. //      static uint32_t secpos;
  415. //        uint16_t secoff;
  416. //        uint16_t secremain;          
  417. //         uint16_t i;  
  418. //        uint08_t SPI_FLASH_BUF[4096];
  419. //  
  420. //
  421. //        secpos=WriteAddr/4096;//起始地址所在扇區(qū)號(hào)  地址 0~511 for w25x16
  422. //        secoff=WriteAddr%4096;//起始地址所在扇區(qū)號(hào)的偏移 在扇區(qū)內(nèi)的偏移
  423. //        secremain=4096-secoff;//起始地址所在扇區(qū)剩余空間大小   
  424. //
  425. //        
  426. //        if(NumByteToWrite<=secremain)secremain=NumByteToWrite;//不大于4096個(gè)字節(jié)  裝的下
  427. //        while(1)
  428. //        {       
  429. //                b_hExFlashRead(SPI_FLASH_BUF,secpos*4096,4096);//讀出整個(gè)扇區(qū)的內(nèi)容
  430. //                for(i=0;i<secremain;i++)//校驗(yàn)數(shù)據(jù)
  431. //                {
  432. //                        if(SPI_FLASH_BUF[secoff+i]!=0XFF)break;//需要擦除            
  433. //                }
  434. //                if(i<secremain)//需要擦除
  435. //                {
  436. //                        ExFlash_hSector4KErase(secpos);//擦除這個(gè)扇區(qū)
  437. //                        for(i=0;i<secremain;i++)           //復(fù)制
  438. //                        {
  439. //                                SPI_FLASH_BUF[i+secoff]=pBuffer[i];          
  440. //                        }
  441. //                        ExFlash_hWriteMustErase(SPI_FLASH_BUF,secpos*4096,4096);//寫入整個(gè)扇區(qū)  
  442. //
  443. //                }else ExFlash_hWriteMustErase(pBuffer,WriteAddr,secremain);//寫已經(jīng)擦除了的,直接寫入扇區(qū)剩余區(qū)間.
  444. //               
  445. //                if(NumByteToWrite==secremain)break;//寫入結(jié)束了
  446. //                else//寫入未結(jié)束
  447. //                {
  448. //                        secpos++;//扇區(qū)地址增1
  449. //                        secoff=0;//偏移位置為0          
  450. //
  451. //                           pBuffer+=secremain;  //指針偏移
  452. //                        WriteAddr+=secremain;//寫地址偏移          
  453. //                           NumByteToWrite-=secremain;                                //字節(jié)數(shù)遞減
  454. //                        if(NumByteToWrite>4096)secremain=4096;        //下一個(gè)扇區(qū)還是寫不完
  455. //                        else secremain=NumByteToWrite;                        //下一個(gè)扇區(qū)可以寫完了
  456. //                }         
  457. //        };                  
  458. //}
  459. extern void b_hExFlashWrite(uint08_t *databuffer,uint32_t address,uint32_t datasize)
  460. {
  461.      ExFlash_hWriteEnable();                                                //寫使能
  462.      Flash_CS_0;                                               //置cs低選中
  463.      ExFlash_hSendByte(0x02);
  464.      ExFlash_hSendByte((uint08_t)(address>>16));
  465.      ExFlash_hSendByte((uint08_t)(address>>8));
  466.      ExFlash_hSendByte((uint08_t)address);
  467.      while(datasize>0)
  468.      {
  469.           ExFlash_hSendByte(*databuffer);
  470.           databuffer++;
  471.           datasize--;
  472.      }
  473.      Flash_CS_1;                                           //置cs高不選中
  474.                       //等待器件寫完結(jié)束
  475.      
  476. }
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:46925 發(fā)表于 2019-8-21 15:26 | 只看該作者
自已頂一下,有需要的拿走
回復(fù)

使用道具 舉報(bào)

板凳
ID:163476 發(fā)表于 2023-3-12 23:56 | 只看該作者
感謝分享,回頭試試
回復(fù)

使用道具 舉報(bào)

地板
ID:621725 發(fā)表于 2025-7-3 11:45 | 只看該作者
頂樓主!感謝分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
色综合咪咪久久| 国产在线观看精品| 久久久99精品久久| 亚洲黄页在线观看| 日本视频不卡| 国产精品美女一区二区视频| 91麻豆免费视频网站| 亚洲图片在区色| 久久综合久久99| 91精品国产调教在线观看| 欧美xxxxhdvideosex| 欧美猛交xxxxx| 久久久久久久国产精品毛片| 人妻有码中文字幕| www.av一区视频| 日韩综合视频在线观看| 色综合一个色综合亚洲| 国产成人在线免费观看| 久久一区二区中文字幕| 周于希免费高清在线观看 | 好吊日视频在线观看| xxxxwwww欧美| 国产精品无码专区av免费播放| 女同性恋一区二区三区| 久久99精品国产一区二区三区| www亚洲精品| 91久久奴性调教| 91一区在线观看| 日韩天天综合| 超碰精品在线观看| 波多野结衣在线高清| 欧洲免费av| 无码国精品一区二区免费蜜桃| 日本a级片视频| 亚洲综合中文网| 国产高清不卡无码视频| 亚洲一区二区三区在线免费观看| 中文字幕亚洲一区二区三区| 色综合欧美在线视频区| 久久久久久久久久久黄色| 蜜桃视频一区| 日韩一区三区| 国产欧美88| 成人影院在线视频| 国产一区二区三区福利| 免费污片软件| 日韩在线观看视频网站| 成人精品免费在线观看| 亚洲区自拍偷拍| 亚洲一级片免费观看| 国产毛片久久久久久国产毛片| 99porn视频在线| 日韩美女免费视频| 欧美夫妻性生活xx| 亚洲视频欧美视频| 日韩欧美美女一区二区三区| 亚洲高清免费一级二级三级| 久久精品在线观看| 国产成人福利片| 日韩精品亚洲专区| 国产视频精选在线| sedog在线观看| 欧美free性| 性高潮久久久久久久久久| 国产又色又爽又黄又免费| 国产一级二级三级视频| 色www亚洲国产阿娇yao| 国产草草浮力影院| 青青草原播放器| 三级a在线观看| 影音先锋成人资源网站| 鲁鲁狠狠狠7777一区二区| 97超级碰在线看视频免费在线看 | 日韩国产欧美一区二区三区| 亚洲国产精品成人| 久久综合色占| 日韩极品少妇| 美女主播精品视频一二三四| 日韩欧美中文在线观看| 成人国产精品久久| 人人精品久久| 国产精品毛片久久久久久久久久99999999| 1区2区在线观看| 黄网在线观看| 国产精品99久久99久久久| 免费能直接在线观看黄的视频| 欧美黑人双插| 精品一区二区三区五区六区七区| 久久人体做爰大胆| 欧美人与z0zoxxxx特| 另类free性欧美护士| 久久精品免视着国产成人| 国产麻豆麻豆| 尤物视频..com| www网站在线观看| a级女人18毛片| 免费看黄色的网站| 黄色漫画在线免费观看| 国产专区视频| 欧美激情图区| av在线电影观看| 久久免费电影| 香蕉成人影院| 久久伊人精品| 亚洲欧美tv| 99久久99久久精品国产片桃花| 日韩极品在线| 综合色一区二区| av成人毛片| 国产精品亚洲人在线观看| 91在线小视频| 亚洲欧洲av在线| 亚洲超丰满肉感bbw| 在线日韩av片| 精品99一区二区三区| 一区二区三区国产视频| 日产精品99久久久久久| 久久久神马电影| 国产淫片免费看| 90岁老太婆乱淫| 成人午夜淫片100集| 亚洲 小说区 图片区 都市| h在线观看网站| 在线看免费av| 97久久亚洲| 亚洲影院一区| 中文字幕欧美三区| 欧美一区二区三区色| 欧美激情videos| 精品国产乱码久久久久久郑州公司 | 国产高清一区在线观看| www.日韩| 午夜激情久久| 成人中文字幕在线| 日本韩国欧美国产| 另类图片亚洲另类| 国产日韩欧美二区| 在线免费视频a| 精品无码m3u8在线观看| 色先锋av资源中文字幕| 国产精品视频一区二区图片| av免费不卡| 国产精品久久观看| 91麻豆swag| 欧美一级精品大片| 国产精品va在线播放我和闺蜜| 午夜啪啪免费视频| 久久午夜夜伦鲁鲁片| 亚洲最大成人av| 日日摸夜夜夜夜夜添| 成年人黄视频在线观看| 少妇高潮一区二区三区| 九色综合国产一区二区三区| 五月天欧美精品| 美女少妇精品视频| 一本一本a久久| 小早川怜子久久精品中文字幕| 性一交一乱一精一晶| 男女午夜视频在线观看| 成人爱爱网址| 国产精品多人| 亚洲免费观看高清| 中文在线资源观看视频网站免费不卡| 高清不卡日本v二区在线| 无尽裸体动漫2d在线观看| 午夜毛片在线观看| 天天操夜夜操天天射| 高潮在线视频| 在线综合亚洲| 粉嫩av一区二区三区免费野| 欧美日韩福利在线观看| 亚洲AV无码成人精品一区| 懂色av粉嫩av浪潮av| 婷婷综合久久中文字幕蜜桃三电影| 中文字幕在线网| 成人线上播放| 成人精品鲁一区一区二区| 日韩一区二区高清| 91久久精品国产91久久性色tv| 亚洲最大天堂网| 国产有码在线观看| 一本大道香蕉久在线播放29 | 久久久久狠狠高潮亚洲精品| 久久久国产成人| 三年片免费观看大全| 成年人黄色大片在线| 亚洲美女黄网| 欧洲激情一区二区| 国产精品视频资源| 国产在线观看中文字幕| 丰满熟女一区二区三区| 自拍视频在线免费观看| 亚洲综合专区| 精品毛片网大全| 国产精品久久久久久久久借妻| 污污动漫在线观看| 亚洲av无码国产综合专区| www 日韩| 中文亚洲免费| 欧美一区二区高清| 国内外成人免费视频| 可以直接看的无码av| 精品国内一区二区三区免费视频| sm捆绑调教国产免费网站在线观看| 小嫩嫩精品导航| 欧美放荡的少妇| 九色综合日本| 老司机成人免费视频| 国卡一卡二卡三免费网站| 欧美在线在线| 中文一区一区三区高中清不卡| 超在线视频97| 亚洲欧美日韩一级| 神马午夜一区二区| 国内激情视频在线观看| 精品一区二区三区在线观看国产 | 国产日韩第一页| 波多野结衣激情视频| 神马精品久久| 一区久久精品| 日韩精品最新网址| 不卡中文字幕在线| 国产亚洲久一区二区| 思思99re6国产在线播放| 国产日韩综合| 精品久久久网站| 国产午夜精品视频一区二区三区| 亚洲视频一区在线播放| 粗大黑人巨茎大战欧美成人| 老司机免费视频一区二区三区| 亚洲美女性生活视频| 国内自拍在线观看| 在线成人综合色一区| 四虎影视精品永久在线观看| 国产精品成人免费精品自在线观看| 国产成人一区二区三区电影| 一区二区三区四区免费| av免费看大片| 亚洲天堂偷拍| 亚洲精品色婷婷福利天堂| 久久美女福利视频| 久热中文字幕精品视频在线| 精品福利一区| 在线观看亚洲a| 福利网在线观看| 欧美视频在线观看一区二区三区| 日韩精品第一| 亚洲欧洲日韩一区二区三区| 成人在线激情视频| 日本五十熟hd丰满| 久久77777| caoporen国产精品视频| 日本亚洲精品在线观看| 任你操精品视频| 嫩草在线播放| 国产成人鲁色资源国产91色综| 97超碰国产精品女人人人爽 | 亚洲欧美一区二区不卡| 91丨九色丨国产在线| 精品福利影视| 国产九色91回来了| 91精品影视| 亚洲永久免费av| 亚欧精品在线| 神马午夜精品95| 97se亚洲| 欧美久久久久中文字幕| 欧美网站免费观看| 尤物视频在线视频| 欧美激情日韩| 日韩专区中文字幕| 亚洲高潮女人毛茸茸| 国产最新视频在线观看| 福利视频网站一区二区三区| 国产精品久久久久不卡| 中文字幕一区二区三区精品| 波多野结衣在线高清| 自拍偷在线精品自拍偷无码专区| 欧美精品免费观看二区| 国产精品欧美激情在线| 日韩精品一区二区三区中文在线| 在线免费观看日本欧美| 久久久999视频| 欧洲有码在线视频| 亚洲久久一区二区| 久久国产精品久久久久久久久久 | 美女黄视频在线播放| 国产毛片精品一区| 国产精品高清网站| 91在线视频免费播放| 超薄肉色丝袜脚交一区二区| 色老汉一区二区三区| 精品久久久久久无码国产| 五月天电影免费在线观看一区| 久久久噜噜噜久久狠狠50岁| 97在线视频一区| 亚洲天堂av片| 欧美午夜在线播放| 欧美精品一区视频| 免费在线观看成年人视频| 天天在线视频色| 一区二区高清视频在线观看| 黄色一级片国产| 2017天天干夜夜操| 国产激情一区二区三区四区| 91国产在线播放| 蜜臀av免费在线观看| 成人影院天天5g天天爽无毒影院| 色多多国产成人永久免费网站 | 天堂在线精品视频| 日本又骚又刺激的视频在线观看| 91麻豆.com| 亚洲精品一区二区三区樱花 | 欧美丝袜美腿| 日韩中文综合网| 久草国产在线视频| 9999精品视频| 秋霞国产午夜精品免费视频| 国产精品久久久久久av| 成人av无码一区二区三区| 国产不卡av一区二区| 欧美成在线视频| 日韩国产成人在线| 蜜臀av免费一区二区三区| 久久综合色88| 青青草免费观看视频| 欧美大胆视频| 欧美成人高清视频| 中文字幕在线观看精品| 精品视频99| 91禁国产网站| 精品国产999久久久免费| 亚洲综合专区| 国产精品中文久久久久久久| 少妇一级淫片免费看| 亚洲国产第一| 5566中文字幕一区二区| 欧美黑人性受xxxx喷水| 日本麻豆一区二区三区视频| 国产一区二区视频在线免费观看| 国产福利免费观看| 国产成人免费xxxxxxxx| 在线观看18视频网站| 美国成人av| 亚洲高清三级视频| 亚洲无人区码一码二码三码| 绿色成人影院| 欧美精品一区二区在线播放| 久草免费在线观看视频| 视频小说一区二区| 欧洲中文字幕国产精品| 成人网6969conwww| 久久国产尿小便嘘嘘| 伊人久久99| 九色porny在线观看| 亚洲不卡在线观看| 熟女少妇一区二区三区| 精品国产乱码一区二区三区 | 国产精品一区二区无码对白| 伊伊综合在线| 伊人久久大香线蕉av一区二区| 日本久久综合网| 午夜久久影院| 精品视频在线观看| sm一区二区三区| 亚洲妇女屁股眼交7| 男男做爰猛烈叫床爽爽小说 | ●精品国产综合乱码久久久久| 天天干天天色天天干| 天堂√中文最新版在线| 国产一区二区三区在线看| 中文字幕乱码在线观看| 在线一区视频| 成年人免费观看的视频| 国产一区二区三区福利| 日韩色视频在线观看| 中文字幕av影院| 国产亚洲高清视频| 亚洲欧美日产图| 欧美扣逼视频| 日韩午夜激情视频| 中文字幕第15页| 99亚洲一区二区| 2021狠狠干| www在线免费观看视频| 亚洲男人天堂手机在线| a在线观看视频| 国产福利一区在线| 国产一级特黄a大片免费| 欧美电影免费观看| 欧美激情中文网| 国产成人亚洲精品乱码在线观看 | 成人午夜在线观看| 18av千部影片| 午夜在线成人av| 欧美成人一二三区| 亚洲另类自拍| 97视频在线免费| 国产精品伦理| 欧美亚洲午夜视频在线观看|