amobbs.com 阿莫电子技术论坛
标题:
合宙ari001的算法文件flash编程函数为什么是i==30执行页编程
[打印本页]
作者:
weavr
时间:
2023-8-28 11:51
标题:
合宙ari001的算法文件flash编程函数为什么是i==30执行页编程
请教为什么合宙ari001的算法文件flash编程函数是i==30执行页编程:
int ProgramPage(unsigned long adr, unsigned long sz, unsigned char *buf)
{
sz = (sz + 127) & ~127; // Adjust size for 32 Words
FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP
while (sz)
{
FLASH->CR |= FLASH_CR_PG; // Programming Enabled
FLASH->CR |= FLASH_CR_EOPIE;
for (u8 i = 0; i < 32; i++)
{
M32(adr + i * 4) = *((u32 *)(buf + i * 4)); // Program the first word of the Double Word
if (i == 30)
{
FLASH->CR |= FLASH_CR_PGSTRT;
}
}
__asm("DSB");
while (FLASH->SR & FLASH_SR_BSY)
{
IWDG->KR = 0xAAAA; // Reload IWDG
}
FLASH->CR &= ~FLASH_CR_PG; // Programming Disabled
FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE
adr += 128; // Go to next Page
buf += 128;
sz -= 128;
}
return (0); // Done
}
作者:
weavr
时间:
2023-8-28 13:52
找到答案了,原来是要在最后一个数据之前执行
[attach]625112[/attach]
欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/)
Powered by Discuz! X3.4