u8 put_page(u32 prg_mem_adr,u16 *page_buf_ptr) { u16 i; _WAIT_FOR_SPM(); _ENABLE_RWW_SECTION(); for (i=0;i<(P_SIZE);i++) { _WAIT_FOR_SPM(); #pragma diag_suppress=Pe1053 // Suppress warning for conversion from long-type address to flash ptr. _FILL_TEMP_WORD( prg_mem_adr +i*2, page_buf_ptr[i] ); // Convert word-address to byte-address and fill. #pragma diag_default=Pe1053 // Back to default. } _WAIT_FOR_SPM(); #pragma diag_suppress=Pe1053 // Suppress warning for conversion from long-type address to flash ptr. _PAGE_ERASE( prg_mem_adr ); #pragma diag_default=Pe1053 // Back to default. _WAIT_FOR_SPM(); #pragma diag_suppress=Pe1053 // Suppress warning for conversion from long-type address to flash ptr. _PAGE_WRITE( prg_mem_adr ); // Convert word-address to byte-address and write. #pragma diag_default=Pe1053 // Back to default. _WAIT_FOR_SPM(); _ENABLE_RWW_SECTION(); for (i=0;i<P_SIZE;i++) { #pragma diag_suppress=Pe1053 // Suppress warning for conversion from long-type address to flash ptr. if (*(((FLASH__ u16 *)prg_mem_adr)+i)!=page_buf_ptr[i]) break; #pragma diag_default=Pe1053 // Back to default. } if (i<P_SIZE) { return 1; } return 0; }