我把你例子里生成的TEST.sct替代了Sample里的target.lin,这样程序能编译成功并仿真起来。
我这个程序尝试着读写Flash,结果发现我只能读到Flash里面存有Hex数据的地方。其他地方取地址读到的都是0,但是事实上我通过ISP软件通过串口在PC端读到的Flash里面除了Hex数据外,其他地方的值应该是0xFF.
原本我的理解是Flash地址空间:(0x08000000-0x0801FFFF )我都可以访问,这样我可以把一些断电后需要保存的数据存到Flash 除去Hex外的地方。
结果现在看起来,我的读是不成功的,那下一步想要写更是不成功了。
请问是什么原因呢?
我看Sample里的Code似乎有UnLock Flash?
int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {
// Zero Wait State
FLASH->ACR = 0x00000000;
// Unlock Flash
FLASH->KEYR = FLASH_KEY1;
FLASH->KEYR = FLASH_KEY2;
// Unlock Option Bytes
FLASH->OPTKEYR = FLASH_KEY1;
FLASH->OPTKEYR = FLASH_KEY2;
// Test if IWDG is running (IWDG in HW mode)
if ((FLASH->OBR & 0x04) == 0x00) {
// Set IWDG time out to ~32.768 second
IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR
IWDG->PR = 0x06; // Set prescaler to 256
IWDG->RLR = 4095; // Set reload value to 4095
}
return (0);
}
|