硬汉嵌入式论坛

 找回密码
 立即注册
查看: 334|回复: 1
收起左侧

[客户分享] CH32V203整片擦除函数,末尾有个诡异的延迟实现,单纯的判断标志位还不行

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123007
QQ
发表于 2026-4-28 18:01:28 | 显示全部楼层 |阅读模式



这个确实有点奇怪,手册上没找到说明

[C] 纯文本查看 复制代码
/*********************************************************************
 * @fn      FLASH_EraseAllPages
 *
 * @brief   Erases all FLASH pages.
 *
 * @return  FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG,
 *        FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
 */
FLASH_Status FLASH_EraseAllPages(void)
{
    FLASH_Status status = FLASH_COMPLETE;

    status = FLASH_WaitForLastOperation(EraseTimeout);
    if(status == FLASH_COMPLETE)
    {
        FLASH->CTLR |= CR_MER_Set;
        FLASH->CTLR |= CR_STRT_Set;

        status = FLASH_WaitForLastOperation(EraseTimeout);

        FLASH->CTLR &= CR_MER_Reset;
    }
#if defined (CH32V20x_D8) || defined (CH32V20x_D8W)
        FLASH_EraseAll_Delay(180000);
#else
        FLASH_EraseAll_Delay(150000);
#endif
    return status;
}

回复

使用道具 举报

32

主题

463

回帖

559

积分

金牌会员

积分
559
发表于 2026-4-28 22:03:04 | 显示全部楼层
看沁恒的手册时不时有让人头大的时候。我印象比较深的是在手册里面说明某些功能不同批次之间会有差异,要查看芯片上的批次号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-6-10 16:01 , Processed in 0.453143 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表