在论坛上发现的代码,下面的微DSPIC33 F512EL512GM710i是闪存写代码数据0x30(ASCII中的“0”)的地址0x02A000的代码集,我从UART接收到60个字符的字符串,我需要将它从闪存存储在地址0x02A000 0i重置。闪存与EraseFlash()有关;这是OK。但是WreFlash行()例程不起作用。闪存参数);NVMADR=(偏移量;0xF800);NVMCON=0x400 3;/ /擦除页闪存(6);/ /禁用6 CICILIOBuuTyTnIn写(NVM)(0);UTI1616T偏移;偏移量=0;NVMSRCADRL=& RAMPATHORE(0);NVMADSRUDRU=0;NVMADRU=α-Bug TurnIn TBLIPGE(&闪存参数);/FLASH参数=0x02A000地址偏移=α-BuuxTiNT-TBLOPENCE(&;闪存参数);NVMADR=(偏移量和0xFC00);NVMCON=0x400 2;// COMANDO每SCRIVEENUA里加在Flash,SuxBuffTyNo.DISI(6);/ /禁用6 CICIL//Y-BuiTynIn Wr.WVME();NVMKEY=0x55;NVMKEY=0xAA;NVMCONBITWS=1;ASM(“NOP”);ASM(“NOP”);而(NVMCONBITS。WR);返回0;} /***********************
以上来自于百度翻译
以下为原文
Hi
wrote the code as found on the forum for the micro dspic33f512el512gm710
I Below is the code
I at the address 0x02a000 of the flash memory write code data 0x30 ("0" in ascii)
I receive a string of 60 characters from the uart and I need to store it from the flash memory at address 0x02a000
I reset the flash memory concerned eraseFLASH (); and this is ok.
But the writeFLASHrow () routine; does not work.
I do not know what to do.
thanks
Renato
//*****************************
uint8_t eraseFLASH(void)
{
uint16_t offset;
NVMADRU = __builtin_tblpage(&FLASHparameters);
offset = __builtin_tbloffset(&FLASHparameters);
NVMADR = (offset & 0xF800);
NVMCON = 0x4003; // erase a page FLASH
__builtin_disi(6); // disable interrupt per 6 cicli
__builtin_write_NVM();
return 0;
}
//*********************************************
//********************************************
uint8_t writeFLASHrow(void)
{
uint16_t offset;
offset = 0;
NVMSRCADRL = & RAMparameters [0];
NVMSRCADRH = 0;
NVMADRU = __builtin_tblpage(&FLASHparameters); //FLASHparameters=0X02A000 address
offset = __builtin_tbloffset(&FLASHparameters);
NVMADR = (offset & 0xFC00);
NVMCON = 0x4002; // Comando per scrivere una riga in FLASH
__builtin_disi(6); // disable interrupt per 6 cicli
// __builtin_write_NVM();
NVMKEY = 0x55;
NVMKEY = 0xAA;
NVMCONbits.WR = 1;
asm("NOP");
asm("NOP");
while(NVMCONbits.WR);
return 0;
}
//**************************************