[AT32F415] AT32F415 FLASH操作

[复制链接]
 楼主| 呐咯密密 发表于 2025-5-29 14:48 | 显示全部楼层 |阅读模式
编程的次序为:
解锁 - 擦除 - 编程 -加锁
  1. /*------------FLASH operation----------*/
  2. void FLASH_Unlock(void)
  3. {
  4.     FLASH->FCKEY = 0x45670123;
  5.     FLASH->FCKEY = 0xCDEF89AB;
  6. }

  7. void FLASH_Lock(void)
  8. {
  9.     FLASH->CTRL |= (uint32_t)FLASH_CTRL_LCK;
  10. }

  11. uint8_t FLASH_ErasePage(uint32_t Page_Address)
  12. {
  13.     uint32_t Timeout = 0x10000000;

  14.     do
  15.     {
  16.         Timeout--;
  17.     } while (FLASH->STS & FLASH_STS_BSY);

  18.     if (Timeout > 0)
  19.     {
  20.         FLASH->CTRL |= FLASH_CTRL_PGERS;
  21.         FLASH->ADDR = Page_Address;
  22.         FLASH->CTRL |= FLASH_CTRL_STRT;

  23.         Timeout = 0x10000000;
  24.         do
  25.         {
  26.             Timeout--;
  27.         } while (FLASH->STS & FLASH_STS_BSY);

  28.         FLASH->CTRL &= ~FLASH_CTRL_PGERS;
  29.         if (Timeout > 0)
  30.             return 1;
  31.         else
  32.             return 0;         
  33.     }
  34.     else
  35.         return 0;
  36. }

  37. uint8_t FLASH_ProgramWord(uint32_t Address, uint32_t Data)
  38. {
  39.     uint32_t Timeout = 0x0000F000;

  40.     do
  41.     {
  42.         Timeout--;
  43.     } while (FLASH->STS & FLASH_STS_BSY);

  44.     if (Timeout > 0)
  45.     {
  46.         FLASH->CTRL |= FLASH_CTRL_PRGM;
  47.         *(__IO uint32_t*)Address = Data;

  48.         Timeout = 0x0000F000;
  49.         do
  50.         {
  51.             Timeout--;
  52.         } while (FLASH->STS & FLASH_STS_BSY);

  53.         FLASH->CTRL &= ~FLASH_CTRL_PRGM;
  54.         if (Timeout > 0)
  55.             return 1;
  56.         else
  57.             return 0;         
  58.     }
  59.     else
  60.         return 0;   
  61. }


DuskHarvest 发表于 2025-7-16 16:55 | 显示全部楼层
这个可以,看了之前一个哥们问了类似问题,我把你的链接发给他
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

567

主题

4081

帖子

56

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

567

主题

4081

帖子

56

粉丝
快速回复 在线客服 返回列表 返回顶部