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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版