当前位置: 首页 > article >正文

关于STM32G0 FLASH 写入时出现PGSERR的一种处理办法

关于STM32G0 FLASH 写入时出现PGSERR的一种处理办法

	HAL_FLASH_Unlock();  //解锁flash
	FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, Address, datau);
	HAL_FLASH_Lock();    //上锁写保护

代码如上,使用的IC是G030,但是却有时候会出现无法写入的情况,这里说一下发现的规律,用上面写函数写时,出现了了PGSERR等错误,可以通过查看寄存器看到,但是写完后发现该错误消失了,所以这里再次写入就可以了。
改进如下:

do
{
	HAL_FLASH_Unlock();  //解锁flash
	FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, Address, datau);
	HAL_FLASH_Lock();    //上锁写保护
	if(FlashStatus  != HAL_OK)
	{
		HAL_FLASH_Unlock();  //解锁flash
		FLASH_WaitForLastOperation(1000);
		FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, Address, datau);
		HAL_FLASH_Lock();    //上锁写保护
	}
}while (FlashStatus  != HAL_OK);

当然也有人提出其他方法,比如https://blog.csdn.net/crazy_kismet/article/details/102739562文章中就提供了另一种方法,他在出现错误后先擦除,再写入,实测中发现,先擦除后又出现了PGSERR,所以这里不使用先擦除的方式。


http://www.kler.cn/a/154582.html

相关文章:

  • MySQL数据库:SQL语言入门 【3】(学习笔记)
  • html + css 自适应首页布局案例
  • GEE下载ERA5-Land气象数据(1950-至今,降水、温度)
  • 如何在uniapp中获取和修改Web项目的Cookie
  • 【已解决】git push一直提示输入用户名及密码、fatal: Could not read from remote repository的问题
  • java版嘎嘎快充汽车单车充电系统源码系统jeecgboot
  • n个整数存放在一个一维数组A中,任选一种程序设计语言,编写一个函数,利用递归的方法,求数组中各整数的平均值
  • 状态模式-C++实现
  • 使用java批量生成Xshell session(*.xsh)文件
  • Unity对接后台和加载图片
  • 4.4-Docker bridge0详解
  • oracle FUNCTION(任意两个时间 之间的工作小时)
  • 游戏被流量攻击会有什么样的影响,该用什么样的防护方式去处理
  • 07-原型模式-C语言实现
  • 2022年9月6日 Go生态洞察:Go的漏洞管理新支持
  • 基于Cocos2D-X框架闯关游戏的设计
  • acwing算法基础之贪心--排序不等式、绝对值不等式和推公式
  • 【LeetCode热题100】【双指针】移动零
  • Asp.Net Core Web Api内存泄漏问题
  • 阿里云域名解析到非默认端口处理方式
  • Uniapp Vue3 基础到实战 教学视频
  • 计算机毕业设计 基于Web的铁路订票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Kafka常见面试题
  • 苹果mac屏幕投屏镜像工具AirServer2024
  • uni-app x生成的安卓包,安装时,提示不兼容。解决方案
  • JTag 提取NXP固件脚本示例