fmc_unlock(); //FMC 解锁 fmc_flag_clear(FMC_FLAG_BANK0_END | FMC_FLAG_BANK0_WPERR | FMC_FLAG_BANK0_PGERR ); //清除标志 for(EraseCounter = 0; EraseCounter < PageNum; EraseCounter++){ fmc_page_erase(FMC_WRITE_START_ADDR + (FMC_PAGE_SIZE * EraseCounter)); //page 擦除 fmc_...
gd_eval_led_init(LED2); gd_eval_led_init(LED3); 2)进行 page erase void fmc_erase_pages(void) { uint32_t EraseCounter; fmc_unlock(); //FMC 解锁 fmc_flag_clear(FMC_FLAG_BANK0_END | FMC_FLAG_BANK0_WPERR | FMC_FLAG_BANK0_PGERR ); //清除标志 for(EraseCounter = 0; EraseCoun...
fmc_flag_clear(FMC_FLAG_BANK0_END | FMC_FLAG_BANK0_WPERR | FMC_FLAG_BANK0_PGERR ); //清除标志 for(EraseCounter = 0; EraseCounter < PageNum; EraseCounter++){ fmc_page_erase(FMC_WRITE_START_ADDR + (FMC_PAGE_SIZE * EraseCounter)); //page 擦除 fmc_flag_clear(FMC_FLAG_BANK0_EN...
fmc_flag_clear(FMC_FLAG_OBMERR); erase_addr+=FLAG_PAGE_SIZE; data_earse_num-=FLAG_PAGE_SIZE; } }else{ /*若写入地址不是页起始地址*/ for(;(data_earse_num>0||erase_addr>=write_start_addr+data_lengh);) { fmc_sector_erase(erase_addr); /* 清除错误标志 */ fmc_flag_clear(FMC_FLAG...
按照模式2进行hnor.Init.WriteBurst=FMC_WRITE_BURST_DISABLE;//禁止写突发访问 写操作工作在异步模式//hnor.Init.ContinuousClock=FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;hnor.Init.WriteFifo=FMC_WRITE_FIFO_ENABLE;//读写数据应该底层是按位操作先的,然后再字节操作;所以要fifo;hnor.Init.PageSize=FMC_PAGE_SIZE_...
uint32_t PageSize; }FMC_NORSRAM_InitTypeDef; 下面将这几个成员逐一为大家做个介绍: uint32_t NSBank 用于设置使用的BANK,片选NE1对于BANK1,片选NE2对应BANK2,片选NE3对应BANK3,NE4对应BANK4,支持的参数类型如下: #defineFMC_NORSRAM_BANK1 ((uint32_t)0x00000000U)#defineFMC_NORSRAM_BANK2 ((uint32...
uint32_t PageSize 用于设置页大小,FMC操作器件Cellular RAM 1.5时要用到,具体支持的参数如下: AI检测代码解析 #define FMC_PAGE_SIZE_NONE ((uint32_t)0x00000000U) #define FMC_PAGE_SIZE_128 ((uint32_t)FMC_BCR1_CPSIZE_0) #define FMC_PAGE_SIZE_256 ((uint32_t)FMC_BCR1_CPSIZE_1) ...
fmc_flag_clear(FMC_FLAG_BANK0_END | FMC_FLAG_BANK0_WPERR | FMC_FLAG_BANK0_PGERR ); //清除标志 for(EraseCounter = 0; EraseCounter < PageNum; EraseCounter++){ fmc_page_erase(FMC_WRITE_START_ADDR + (FMC_PAGE_SIZE * EraseCounter)); //page 擦除 fmc_flag_clear(FMC_FLAG_BANK0_EN...
data_earse_num-=FLAG_PAGE_SIZE; } }else{ /*若写入地址不是页起始地址*/ for(;(data_earse_num>0||erase_addr>=write_start_addr+data_lengh);) { fmc_sector_erase(erase_addr); /* 清除错误标志 */ fmc_flag_clear(FMC_FLAG_WPERR); fmc_flag_clear(FMC_FLAG_PGSERR); fmc_flag_clear(FM...
hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;hsram1.Init.MaxChipSelectPulse = DISABLE;/* Timing ...