首页 论坛 原厂专区 ST MCU 我是想问有没有一种单片机,可以在闪存擦除的那10来毫秒的时间里,仍然能够不间断地

发帖 回复

[求助] 我是想问有没有一种单片机,可以在闪存擦除的那10来毫秒的时间里,仍然能够不间断地
446 查看
2 回复
 楼主 | 发布于 2018-05-09 | 只看楼主
分享到:
我是想问有没有一种单片机,可以在闪存擦除的那10来毫秒的时间里,仍然能够不间断地继续跑其他程序。
(0 ) (0 )
回复 举报

回复于 2018-06-02 沙发

把操作FLASH的函数放在RAM里面就行了
(0 )
评论 (0) 举报

回复于 2018-06-02 2#

放一段我实际用的代码


#pragma arm section code = "RAMCODE"

void WriteFlash(unsigned int startAddress,unsigned short length,unsigned short *buf)
{
    unsigned int parP;
    unsigned int i;
    
    parP=startAddress;
    FLASH_Unlock();
    FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
    
    FLASH_ErasePage(startAddress);
    
    for(i=0;i<length && i<512;i++)
    {
        FLASH_ProgramHalfWord(parP,buf[i]);
        parP+=2;
    }

    FLASH_Lock();
}

#pragma arm section code


这个编译的时候要改一下链接文件

这里是我用的sct文件 芯片是stm32f103c8t6


; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x0000F000  {    ; load region size_region
  ER_IROM1 0x08000000 0x0000F000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00005000  {  ; RW data
   *.o(RAMCODE)
   .ANY (+RW +ZI)
  }
}



(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部