📄 flash.txt
字号:
void Flash_Init(void); /*FLASH初始化*/
void Flash_GetID( UHWORD *in_data_p ); /*ID读取*/
bool Flash_Erase( UWORD in_sa_base ); /*FLASH擦除*/
bool Flash_Program( UWORD in_base, UHWORD in_data ); /*FLASH编程*/
void Flash_Init(void)
{
pimm->memc_br0 = 0x02800801; /*flash base: 0x02800000, no pare, 16 bit, no write protect*/
}
void Flash_GetID( UHWORD *in_data_p )
{
*MCU_FLASH_ADDR( 0x555 ) = 0xAA;
*MCU_FLASH_ADDR( 0x2aa ) = 0x55;
*MCU_FLASH_ADDR( 0x555 ) = 0x90;
in_data_p[0] = *MCU_FLASH_ADDR( 0x100 );
in_data_p[1] = *MCU_FLASH_ADDR( 0x101 );
in_data_p[2] = *MCU_FLASH_ADDR( 0x102 );
}
bool Flash_Erase( UWORD in_sa_base )
{
*MCU_FLASH_ADDR( 0x555 ) = 0xAA;
*MCU_FLASH_ADDR( 0x2aa ) = 0x55;
*MCU_FLASH_ADDR( 0x555 ) = 0x80;
*MCU_FLASH_ADDR( 0x555 ) = 0xAA;
*MCU_FLASH_ADDR( 0x2aa ) = 0x55;
*MCU_FLASH_ADDR( in_sa_base ) = 0x30;
for(int i=0;i<SA_NUM;i++)
{
while( *MCU_FLASH_ADDR( in_sa_base + i ) != 0xFFFF );
}
return 1;
}
bool Flash_Program( UWORD in_base, UHWORD in_data )
{
*MCU_FLASH_ADDR( 0x555 ) = 0xAA;
*MCU_FLASH_ADDR( 0x2aa ) = 0x55;
*MCU_FLASH_ADDR( 0x555 ) = 0xA0;
*MCU_FLASH_ADDR( in_base ) = in_data;
while( (*MCU_FLASH_ADDR( in_base ) & 0x0080) == 0 );
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -