[STM32F1] 程序在RAM中运行,中断在FLASH中运行的问题

[复制链接]
1568|6
 楼主| bobo0o 发表于 2017-3-2 10:21 | 显示全部楼层 |阅读模式
我使用SWD在RAM中进行调试,发现主程序是在RAM中进行修改,写入都可以正常运行。但是中断程序只有写入FALSH才能被修改,只写入RAM中断的程序不会被修改 QQ图片20170302101504.png


void TIM2_IRQHandler(void)
{
        u8 ReadLed;
        if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
        {                       
                TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);
                ReadLed=GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_10);
                if(ReadLed)
                        GPIOB->BRR = GPIO_Pin_10;
                else
                        GPIOB->BSRR = GPIO_Pin_10;
        }
}


就像这个我修改引脚,写入RAM中。运行的输出引脚不会变,只有写入FALSH才会改变。
自然的天逸 发表于 2017-3-2 11:39 | 显示全部楼层
还需要设置中断向量表   /* Set the Vector Table base location at 0x20000000 */
// NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
自然的天逸 发表于 2017-3-2 11:40 | 显示全部楼层
需要在main 函数 第一行调用
 楼主| bobo0o 发表于 2017-3-2 16:49 | 显示全部楼层
自然的天逸 发表于 2017-3-2 11:39
还需要设置中断向量表   /* Set the Vector Table base location at 0x20000000 */
// NVIC_SetVectorTable ...

我在配置中断前加了
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x20000000);
然后就可以了,谢谢。
chenci2013 发表于 2017-3-2 23:08 | 显示全部楼层
STM32直接下载不可以吗
chenci2013 发表于 2017-3-2 23:10 | 显示全部楼层
STM32可以烧写10W次。
 楼主| bobo0o 发表于 2017-3-9 09:22 | 显示全部楼层
chenci2013 发表于 2017-3-2 23:10
STM32可以烧写10W次。

咦,不是只有1000次吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部