搜索
查看: 908|回复: 0

[讨论] STM32L431反向初始化TIM导致FLASH->SR寄存器的PGSERR位置1

[复制链接]

该用户从未签到

8

主题

53

帖子

3

蝴蝶豆

中级会员

最后登录
2021-10-29
发表于 2021-1-24 10:53:49 | 显示全部楼层 |阅读模式
     项目要求使用STM32L431内部FLASH存储一些调电保存参数,调试发现第一次将参数写入内部FLASH没有问题,当时当我再次写入时,报错,写入不成功,我调试发现在我写入之前FLASH->SR寄存器中的PGSERR位置1了,导致我擦除失败,我进一步调试发现,在我再次写之前这个标志位就已经置1了。     于是我单步调试发现这个标志置位发生在我调用“__HAL_TIM_DISABLE()”函数时(此函数位于HAL_TIM_Base_DeInit()中)自动置位的,我看手册也没找到产生这个问题的原因,是芯片BUG还是程序BUG?
/** 测试代码 :希望有条件的跑跑看 */
int main(void)
{
  /** 使能电源接口时钟 */
  __HAL_RCC_PWR_CLK_ENABLE();  
  /** Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /** 时钟初始化 */
  SystemClock_Config();
/** 下面这个函数会导致PGSERR置位 */
  HAL_TIM_Base_DeInit(&TimHandle);
  HAL_Delay(1000);
  DEBUG("Run!!!\n");
  for(;;)
  {
  }




tim1.png
tim2.png
stflash1.png
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-19 11:32 , Processed in 0.149700 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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