2012-08-06 05:38 AM
Hi,
Now I'm using a stm32f100c4t6b processor for an application. The proccessor has 16KB memory. I saved my data like that;#define StartAddr ((u32)0x08007C00)#define EndAddr ((u32)0x08008000)#define FLASH_PAGE_SIZE ((u16)0x400)and I read the data via serial port. No problema.Strangeness is that EndAddr means 32 KB, my processor has 16KB memory (0x4000) but code is working good. What's my fault? Do you have any idea?2012-08-06 06:47 AM
Do you have any idea?
ST make a finite number of different STM32 die, these are packaged and marked differently depending on the features tested, and how many from each category marketing wants to sell. Realistically they don't make a 16 KB flash part, it probably has 32 or 64KB, the time on the tester can be significantly reduced by not bothering to test it all. General rule, don't use what's not tested, or specified to work. See what the system memory says.
printf(''STM32 %d KB FLASH, %d KB RAM
'',
*((unsigned short *)0x1FFFF7E0),
*((unsigned short *)0x1FFFF7E2));
2012-08-06 06:59 AM
Strangeness is that EndAddr means 32 KB, my processor has 16KB memory (0x4000) but code is working good. What's my fault? Do you have any idea?
you are playing with fire it is quite common for semiconductor manufactreres to take a part with 64k that in test fail at, say, address 0x8007124 but otherwise works and label it a 16k part Erik2012-08-06 08:23 AM
Thanks for replies, you're right, according to ''
*((unsigned short *)0x1FFFF7E0)
'' it says 32 KB. But I will not playing with fire :)