OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3319|回复: 5

关于官方的IAP程序

[复制链接]

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
发表于 2016-10-22 11:55:01 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 stayhungry 于 2016-10-22 13:53 编辑

我用原子的模板工程作APP(串口接收采用中断的方式)和ST的IAP例程,用的Hypter Terminal作上位机软件。

在IAP->APP时候是成功的。
然后我在APP的串口接收中断里面,跳转到IAP,然后也是成功的。
此时,我尝试再次跳转到APP,而此时的APP是正常运行的,但就是进不了串口接收中断,无法再跳到IAP了。
这是啥问题呢。

APP的主函数
int main()
{
     NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000);
        __set_PRIMASK(0);//开全局中断
        __ASM("CPSIE  I");//开中断
        USART_RX_STA =0;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        ......

}

APP的接收中断函数部分跳转程序
{
           RCC_DeInit();
        __set_PRIMASK(1);
        __ASM("CPSID  I");
            JumpAddress = *(__IO uint32_t*) (0x8000000 + 4);
            Jump_To_Application = (pFunction) JumpAddress;

            __set_MSP(*(__IO uint32_t*) 0x8000000);
            Jump_To_Application();
}
编译器的设置没问题,我都看过.map里面的内容了。[size=18.018px]




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
 楼主| 发表于 2016-10-22 13:54:09 | 显示全部楼层
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
发表于 2016-10-22 13:56:58 | 显示全部楼层
你的APP有没有改中断向量偏移地址?
看样子是没有改
那自然中断也就进不了
回复

使用道具 举报

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
 楼主| 发表于 2016-10-22 14:20:38 | 显示全部楼层
闪电之舞 发表于 2016-10-22 13:56
你的APP有没有改中断向量偏移地址?
看样子是没有改
那自然中断也就进不了

什么意思??
APP的main函数不就写了NVIC)SetVectorTable函数了咩?编译器里面也是将IROM设置陈0x08003000,然后.map函数,向量表确实也是在这个地方。我在app的一个循环里面可以读出实时的VTOR的值就是0x08003000,可是就是不能进入串口的中断。而且也没有进其他的handler
回复

使用道具 举报

11

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-4-30
在线时间
44 小时
 楼主| 发表于 2016-10-22 14:46:03 | 显示全部楼层
本帖最后由 stayhungry 于 2016-10-22 16:04 编辑


然后换一种思路,就是从APP的串口接收中断里面关掉全局中断,然后NVIC_SystemReset直接软复位系统,这样子就可以了。可是如果我在接收中断里面关掉全局中断,DISABLE掉所有外设,RCC_DeInit掉时钟,竟然还是不行。



回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-10-22 19:06:48 | 显示全部楼层
IAP跳转到APP相当于一次复位,APP跳转到IAR也相当于一次复位。 你串口出问题,建议在初始化串口的时候,对串口进行一次复位(有专门的复位寄存器,可以控制)。试试这个办法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 13:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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