Как выяснилось, Keil действительно не показывает в симуляторе запись во flash. Уж не знаю почему они так сделали, но собственно сам программный код видно, а записанное из программы нет. И при попытке чтения из программы (в симуляторе) тоже имеем нули, каковые и отображаются симулятором по соответствующим адресам. В железе же работает и чтение и запись. Привожу код, может кому сэкономлю пару минут...
CODE
unsigned int Read32FromFlash (unsigned int address)
{
unsigned int *ip;
unsigned int a;
ip = (unsigned int*)address;
a=*ip;
return a;
}
void FLASH32_Unlock(void)
{
FLASH->KEYR = ((uint32_t)0x45670123);
FLASH->KEYR = ((uint32_t)0xCDEF89AB);
}
void FLASH32_Lock(void)
{
FLASH->CR |= FLASH_CR_LOCK;
}
void FLASH_Program32Word(unsigned int Address, unsigned int Data)
{
__IO uint32_t tmp = 0;
while ((FLASH->SR & FLASH_SR_BSY) != 0 );
FLASH->CR |= FLASH_CR_PG; /* Programm the flash */
//FLASH->CR |= (0x00000001);
*(__IO uint16_t*)Address = (uint16_t)Data;
while ((FLASH->SR & FLASH_SR_BSY) != 0 );
tmp = Address + 2;
*(__IO uint16_t*) tmp = Data >> 16;
while ((FLASH->SR & FLASH_SR_BSY) != 0 );
FLASH->CR &= ~FLASH_CR_PG;
}
Сообщение отредактировал IgorKossak - Apr 19 2012, 08:14
Причина редактирования: [codebox]
Живи днем так, чтобы ночью ты спал спокойно.