IAP升级程序后,APP无法进入中断

2019-07-21 00:34发布

我的IAP和APP中都开启了USART1接收中断,但是在APP执行过程中,当USART1接收到数据时,只能跳转到IAP中的USART1中断处理函数,不会执行APP的中断处理函数。网上有的方法都尝试过了,还是不行。我在APP中加入了按键控制发送,就是按下按键后,就通过USART1发送一个1给上位机,是可以实现的,也就是串口是正常的,但就是进不了APP的中断处理函数。我的APP在FLASH起始地址及中断向量便宜设置如下: 1.png

int main()
{

        SCB->VTOR = FLASH_BASE | 0x3000;
       
        RCC_INIT();
        USART_GPIO_INIT();
        NVIC_INIT();
        USART_INIT();
        LED_Init();
        while(1)
        {
                LED_Sets(0x0F);
        }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
午夜狼嚎
1楼-- · 2019-07-24 02:30
 精彩回答 2  元偷偷看……
donqy
2楼-- · 2019-07-24 02:46
IAP方式时只能开可编程中断,像SYSTICK之类的不能开
donqy
3楼-- · 2019-07-24 04:37
 精彩回答 2  元偷偷看……
会飞的鱼zhh
4楼-- · 2019-07-24 09:33
按照你描述的,APP是可以运行,但是进不了APP里面的串口中断。我看了你的APP程序,里面没有串口1中断啊,是串口2的中断服务函数。。。IAP和APP的偏移量,程序地址检测都没问题啊。
午夜狼嚎
5楼-- · 2019-07-24 11:19
会飞的鱼zhh 发表于 2018-9-5 20:42
按照你描述的,APP是可以运行,但是进不了APP里面的串口中断。我看了你的APP程序,里面没有串口1中断啊,是 ...

APP是后面改了的,为了排除IAP和APP的串口相互影响,所以将APP的串口设置成了串口2,IAP是串口1,用来升级程序。感谢你帮我看程序
szczyb1314
6楼-- · 2019-07-24 17:06
void NVIC_DeInit(void)
{
        uint32_t index = 0;
   
        NVIC->ICER[0] = 0xFFFFFFFF;
        NVIC->ICER[1] = 0xFFFFFFFF;       
        NVIC->ICER[2] = 0x0000000F;

       
        NVIC->ICPR[0] = 0xFFFFFFFF;
        NVIC->ICPR[1] = 0xFFFFFFFF;
        NVIC->ICPR[2] = 0x0000000F;

        for(index = 0; index < 68; index++)
        {
                NVIC->IP[index] = 0x00000000;
        }
}
加上个这个函数,只针对F1,F4不一样的地方

一周热门 更多>