帮忙看下FLASH擦除问题的原因

2020-02-06 10:20发布

单片机是PIC24FJ256GB206

配置位如下:

// These are the same config settings used by the bootloader and must not be changed here.
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF & ICS_PGx3)
_CONFIG2( IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_NONE & FNOSC_FRCPLL & PLLDIV_NODIV & IOL1WAY_ON)
_CONFIG3( SOSCSEL_EC & WPCFG_WPCFGDIS & WPDIS_WPDIS)                //Disable erase/write protect of all memory regions.

擦除代码用的官方的:

/********************************************************************
; Function:         void Erase(WORD page, WORD addrLo, WORD cmd);
;
; PreCondition: None.
;
; Input:            page         - upper byte of address
;                                addrLo         - lower word of address
;                                cmd                - type of memory operation to perform
;                              
; Output:           None.
;
; Side Effects: TBLPAG changed
;
; Overview:         Erases page of flash memory at input address
*********************************************************************/       
void Erase(WORD page, WORD addrLo, WORD cmd)
{
        WORD temp;       

        temp = TBLPAG;
        TBLPAG = page;

        NVMCON = cmd;

        __builtin_tblwtl(addrLo,addrLo);

        __builtin_write_NVM();

        while(NVMCONbits.WR == 1);

        TBLPAG = temp;
}

为何执行Erase(170, 0, PM_PAGE_ERASE);后,串口就收不到数据了?如果执行了该操作,重新初始化串口,则又可以收到数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
nos002
1楼-- · 2020-02-06 16:19
 精彩回答 2  元偷偷看……
fengyunyu
2楼-- · 2020-02-06 18:41
擦除某个扇区后,写入数据、读出数据都正常,但就是要重新设置下串口的配置。实在是一头雾水!
fengyunyu
3楼-- · 2020-02-06 23:24
最新测试结果,烧写完程序后,重新上电也可以正常工作。为什么执行了Erase(170, 0, PM_PAGE_ERASE);需要重新初始化串口或重新上电?
fengyunyu
4楼-- · 2020-02-06 23:44
为什么执行了Erase(170, 0, PM_PAGE_ERASE);需要重新初始化串口或重新上电?
fengyunyu
5楼-- · 2020-02-07 03:49
该单片机带有PPS功能,难道擦除FLASH会影响到PPS的配置,进而影响到串口?
fengyunyu
6楼-- · 2020-02-07 04:08
 精彩回答 2  元偷偷看……

一周热门 更多>