单片机是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);后,串口就收不到数据了?如果执行了该操作,重新初始化串口,则又可以收到数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢回复。这个问题貌似是一个乌龙问题。帮忙看下:使用PIC24FJ256GB206,MPLAB IDE8.92,C30编译器,如何定义两个2048大小的数组?现在只能定义1个,定义2个或以上,就提示错误。该单片机有96K ram。
一周热门 更多>