stm32如何將陣列保存到閃存中?如何讀取flash中存儲的數組?
初始化fsmc \ x0d \ void fsmc _ NAND _ init(void)\ x0d \ { \ x0d \ gpio _ init typedef gpio _ init結構;\ x0d \ FSMC _ NAND init typedef FSMC _ NAND init structure;\ x0d \ FSMC _ NAND _ pccardtimingittypedef p;\x0d\ \x0d\ /*啟用FSMC、GPIOD、GPIOE和AFIO時鐘*/\ x0d \ RCC _ AHBPeriphClockCmd(RCC _ AHBPeriph _ FSMC,Enable)。\ x0d \ \ x0d \ RCC _ AP B2 periphclockcmd(RCC _ AP B2 periph _ gp iod | RCC _ AP B2 periph _ gp ioe | \ x0d \ RCC _ AP B2 periph _ gp IOG | RCC _ AP B2 periph _ AFIO,ENABLE);\x0d\ \x0d\ /* - GPIO配置- */\x0d\ /* CLE、ALE、D0-& gt;D3、NOE、NWE和NCE2 NAND引腳配置*/\x0d\ GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 11 | GPIO _ Pin _ 12 | GPIO _ Pin _ 14 | GPIO _ Pin _ 15 | \ x0d \ GPIO _ Pin _ 0 | GPIO _ Pin _ 1 | GPIO _ Pin _ 4 | GPIO _ Pin _ 5;\x0d\ GPIO_InitStructure。GPIO _ Speed = GPIO _ Speed _ 50MHz\x0d\ GPIO_InitStructure。GPIO _ Mode = GPIO _ Mode _ AF _ PP\ x0d \ GPIO _ Init(GPIO id,& ampGPIO _ init structure);\ x0d \ \ x0d \/* D4-& gt;D7 NAND引腳配置*/ \x0d\ GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 7 | GPIO _ Pin _ 8 | GPIO _ Pin _ 9 | GPIO _ Pin _ 10;\ x0d \ GPIO _ Init(GPIOE & amp;GPIO _ init structure);\x0d\ \x0d\/* CS NAND引腳配置*/ \x0d\ GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 9;\ x0d \ GPIO _ Init(GPIOG,& ampGPIO _ init structure);\ x0d \ \ x0d \/* n等待NAND引腳配置*/\x0d\ GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 6;\x0d\ GPIO_InitStructure。GPIO _ Speed = GPIO _ Speed _ 50MHz\x0d\ GPIO_InitStructure。GPIO _ Mode = GPIO _ Mode _ IPU;\ x0d \ GPIO _ Init(GPIO id,& ampGPIO _ init structure);\x0d\\x0d\ /* - FSMC配置-*/\ x0d \ p . FSMC _ set uptime = 0x 1;\ x0d \ p . FSMC _ WaitSetupTime = 0x 3;\ x0d \ p . FSMC _ HoldSetupTime = 0x 2;\ x0d \ p . FSMC _ HiZSetupTime = 0x 1;\ x0d \ \ x0d \ FSMC _ NAND init structure。FSMC銀行= FSMC銀行3 NAND;\x0d\ FSMC_NANDInitStructure。FSMC _等待功能= FSMC _等待功能_啟用;\x0d\ FSMC_NANDInitStructure。FSMC _內存數據寬度= FSMC _內存數據寬度_ 8b\x0d\ FSMC_NANDInitStructure。FSMC _ ECC = FSMC _ ECC _ Enable;\x0d\ FSMC_NANDInitStructure。FSMC _ ECC pagesize = FSMC _ ECC pagesize _ 512字節;\x0d\ FSMC_NANDInitStructure。FSMC _ TCLRSetupTime = 0x 00;\x0d\ FSMC_NANDInitStructure。FSMC _ tarset uptime = 0x 00;\x0d\ FSMC_NANDInitStructure。FSMC _公共空間優化結構= & ampp;\x0d\ FSMC_NANDInitStructure。FSMC屬性空間優化結構= & ampp;\ x0d \ \ x0d \ FSMC _ NANDInit(& amp;FSMC _ NAND init structure);\x0d\\x0d\ /* FSMC NAND銀行Cmd測試*/\ x0d \ FSMC _ NAND Cmd(FSMC _銀行3_NAND,啟用);\x0d\}\x0d\定義壹個寫函數\ x0d \ uint 32 _ TFS MC _ NAND _ writesallpage(uint 8 _ t * p buffer,NAND _ addressabdress,uint 32 _ tnumberpagetowrite)\ x0d \ { \ x0d \ uint 32 _ t index = 0x 00,numpagewritten = 0x00,ADDRESS status = NAND _ VALID _ ADDRESS;\x0d\ uint32_t status = NAND_READY,size = 0x00\ x0d \ uint8 _ t Page = 0x37\ x0d \ while((NumPageToWrite!= 0x00)& amp(ADDRESS status = = NAND _ VALID _ ADDRESS);& amp(status = = NAND _ READY))\ x0d \ { \ x0d \/*頁面寫入命令和地址*/\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | CMD _ AREA)= NAND _ CMD _ Page program;\ x0d \ \ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= 0x 00;\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= 0x 00;\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= ADDR _ 1st _ CYCLE(行地址);\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= ADDR _ 2nd _ CYCLE(行地址);\x0d\\x0d\ /*計算大小*/\ x0d \ size = Page+(Page * numpagewritten);\x0d\\x0d\ /*寫入數據*/\ x0d \ for(;index \x0d\ /*頁面讀取命令和頁面地址*/\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | CMD _ AREA)= NAND _ CMD _ Read _ 1;\ x0d \ \ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= 0x 00;\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= 0x 00;\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= ADDR _ 1st _ CYCLE(行地址);\ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | ADDR _ AREA)= ADDR _ 2nd _ CYCLE(行地址);\ x0d \ \ x0d \ *(vu8 *)(NAND _ FLASH _ START _ ADDR | CMD _ AREA)= NAND _ CMD _ READ _ TRUE;\x0d\ \x0d\ /*忙於讀取*/\ x0d \/while(gpio _ readinputdatabit(gpio og,gpio _ pin _ 6)= = 0);\ x0d \//while(GPIO _ ReadInputDataBit(GPIO id,GPIO _ Pin _ 6)= = 0);\x0d\ \x0d\ /*計算大小*/\ x0d \ size = Page+(Page * numpageread);\x0d\ \x0d\ /*將數據放入緩沖區*/\ x0d \ for(;index \x0d\ addressstatus = FSMC地址增量(& amp地址);\ x0d \ } \ x0d \ \ x0d \ status = FSMC _ NAND _ GetStatus();\ x0d \ \ x0d \ return(status | address status);\x0d\}