你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm iap 跳转后 FLASH的SR出错!

[复制链接]
hb1989102 提问时间:2017-6-1 11:39 /
我在IAP跳转后出现了FLASH_FLAG_PGSERR的错误,跳转后app能正确跑了起来,但是读写内部的flash出错,出现的是FLASH_FLAG_PGSERR的错误,打印的寄存器值是:>>>>>>>>>>>>FLASH->ACR:[0x705]
>>>>>>>>>>>>FLASH->KEYR:[0x0]
>>>>>>>>>>>>FLASH->OPTKEYR:[0x0]
>>>>>>>>>>>>FLASH->SR:[0x80]
>>>>>>>>>>>>FLASH->CR:[0x80000200]
>>>>>>>>>>>>FLASH->OPTCR:[0xfffaaed]
>>>>>>>>>>>>FLASH->OPTCR1:[0x0]
我在跳转前打印的寄存器是这样的:
>>>>>>>>>>>>FLASH->ACR:[0x705]
>>>>>>>>>>>>FLASH->KEYR:[0x0]
>>>>>>>>>>>>FLASH->OPTKEYR:[0x0]
>>>>>>>>>>>>FLASH->SR:[0x0]
>>>>>>>>>>>>FLASH->CR:[0x80000200]
>>>>>>>>>>>>FLASH->OPTCR:[0xfffaaed]
>>>>>>>>>>>>FLASH->OPTCR1:[0x0]

=====================================================

打印前的
   UsartDeInit();
        HAL_DeInit();      
        NVIC_DisableIRQ(SysTick_IRQn);
        __disable_irq();
        /* Jump to user application */
        JumpAddress = *(__IO uint32_t*)(APPLICATION_ADDRESS + 4);
        Jump_To_Application = (pFunction)JumpAddress;
        //SCB->VTOR = (uint32_t)APP_VECTOR_TABLE;
        /* Initialize user application's Stack Pointer */
        __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);

        Jump_To_Application();

跳转后是:
   __disable_irq();
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, VECTOR_ADDRESS);
    /* USER CODE END 1 */

    /* MCU Configuration----------------------------------------------------------*/

    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
     HAL_Init();
    /* Configure the system clock */
    SystemClock_Config();
    __enable_irq();
    /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_DMA_Init();

    /* USER CODE BEGIN 2 */
    GPIOInit();
    UsartInit();

=====================================================
求大神分析一下,为啥跳转前后会导致flash的FLASH_FLAG_PGSERR错误???????????????
收藏 1 评论7 发布时间:2017-6-1 11:39

举报

7个回答
无薪税绵 回答时间:2017-6-16 08:44:50
FLASH->SR 第七位为 LOCK,该位只能写’1’。
当该位为’1’时表示FPEC和FLASH_CR被锁住。
在检测到正确的解锁序列后,硬件清除此位为’0’。
在一次不成功的解锁操作后,下次系统复位前,该位不能再被改变。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

寂寞,点燃一支烟 回答时间:2017-6-16 14:09:35
留名,记得好像KEIL中也要设置地址
peter001 回答时间:2017-6-17 21:14:59
学习一下
weigr 回答时间:2017-6-18 15:49:39
daoshuchen 回答时间:2018-4-21 09:40:48
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, VECTOR_ADDRESS);

SCB->VTOR = FLASH_BASE | APPLICATION_ADDRESS;
daoshuchen 回答时间:2018-4-21 09:46:30
SCB->VTOR = FLASH_BASE | APPLICATION_ADDRESS;
daoshuchen 回答时间:2018-4-23 09:01:47
学习下先

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版