久芯网

STM32关于FLASH的编程对齐错误标志位(PGAERR)的理解,我验证无法产生此错误

avatar haifanyuntian 提问时间: 2023-07-11 13:50:16 / 未解决
大神们,我现在正在做一个应用,需要熟悉STM32F4的FLASH的任何错误标识,以用于特殊情况下的错误标识判断做相应处理,但是针对FLASH的编程对齐错误标志(PGAERR)与我理解不同。

原文描述:不允许针对 Flash 执行跨越 128 位行界限的数据编程操作。如果出现这种情况,写操作将不会执行,并且 FLASH_SR 寄存器中的编程对齐错误标志位 (PGAERR) 将置 1。

我的理解:就是在对flash的地址0x0800 000F、0x0800 001F、0x0800 002F……等地址进行WORD编程,因为地址未对齐,并且接近128位行界限地址,所以编程会产生编程对齐错误,置位PGAERR。

但实际验证与我的理解不一样,按照我的理解写程序,最终产生的是编程并行位数错误, PGPERR将置 1。

麻烦帮我解答下,谢谢

如需获得 STM32 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

2个回答
  • avatar butterflyspring
    回答时间: 2023-07-11 14:09:18

    手册描述这个的目的是要求用户对齐编程,照着做就是了。照着做通常不会出错的。即使真的出错了,库里面出错接口也只能重新写或者报警。 用户研究这个意义不大,这个只对芯片设计人员有意义。

  • avatar haifanyuntian
    回答时间: 2023-07-11 14:33:28
    butterflyspring 发表于 2022-11-22 10:19
    手册描述这个的目的是要求用户对齐编程,照着做就是了。照着做通常不会出错的。即使真的出错了,库里面出错 ...

    麻烦不清楚我问题的实际答案就不要另类回答,我既然提出这个问题肯定不只是对flash编程正确的需求这么简单,既然ST提供出来,自然是给用户用的,那文档没说明清楚或与实际测试不相符,就要弄懂,这也是学好技术的好习惯,“要知其然,更要知其所以”。

会员中心 微信客服
客服
回到顶部