OpenEdv-开源电子网

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

IAP與APP相互轉跳

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-13
在线时间
8 小时
发表于 2018-6-13 15:42:57 | 显示全部楼层 |阅读模式
1金钱
想請教各位,在MCU開機後跳至會先從IAP跳至APP而FLASH位置會設置一個值,在要執行IAP動作的時候,將值改成0
有辦法在不用RESET的狀況下,從APP跳至IAP嗎?

目前使用在APP使用IAP所用到的指令

APPLICATION_ADDRESS = 0x08008000;

[mw_shl_code=c,true]                        JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS - 0x8000 + 4);               
                        Jump_To_Application = (pFunction) JumpAddress;
                        /* Initialize user application's Stack Pointer */
                        __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS - 0x8000);
                        Jump_To_Application();                [/mw_shl_code]


但是跳到IAP後,我有設置一個Timer做LED的閃爍,如果直接從APP使用這個指令跳到APP的話,LED就不會閃爍了。

不曉得各位有沒有這方面的經驗呢?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-14 01:36:14 | 显示全部楼层
软复位是一个好办法。如果实在不想复位,类似IAP跳转到APP的方式,应该也是可行的。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-6-14 07:49:30 | 显示全部楼层
正点原子 发表于 2018-6-14 01:36
软复位是一个好办法。如果实在不想复位,类似IAP跳转到APP的方式,应该也是可行的。

我也認為Reset是一個簡易輕鬆的方式,不過使用 IAP 跳至 APP 中斷功能就會無法使用
不過原廠所提供的IAP還是正常的,UART也可以正常傳送接收

不知道這部分有什麼方法可以找中斷異常的問題呢?
回复

使用道具 举报

9

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2015-10-16
在线时间
49 小时
发表于 2018-6-14 09:24:58 | 显示全部楼层
可以跳转啊,把地址改成0x08000000,记得跳转前关闭所有中断。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-6-14 16:51:27 | 显示全部楼层
aaa405944519 发表于 2018-6-14 09:24
可以跳转啊,把地址改成0x08000000,记得跳转前关闭所有中断。

我目前有直接在APP 直接用上述的程式將地址改成0x08000000做轉跳,

也有在轉跳前使用__disable_irq(); 使中斷關閉,

不過到IAP的時候,我發現我唯一設的TIM7中斷無法使用,

我需要再IAP裡面在使用__enable_irq(); 嗎?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-15 01:34:54 | 显示全部楼层
news9801 发表于 2018-6-14 07:49
我也認為Reset是一個簡易輕鬆的方式,不過使用 IAP 跳至 APP 中斷功能就會無法使用
不過原廠所提供的IAP ...

IAP跳转到APP,中断肯定是可以用的。
你可以参考我们例程,RTC APP就用到了RTC中断。
不能用中断,八成是你的设置有问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-6-15 08:49:25 | 显示全部楼层
正点原子 发表于 2018-6-15 01:34
IAP跳转到APP,中断肯定是可以用的。
你可以参考我们例程,RTC APP就用到了RTC中断。
不能用中断,八成 ...

是的,在MCU Reset進入到IAP,在跳到APP 中斷可以使用沒錯,但是在從APP跳回IAP後,中斷便不能使用

動作是Reset→IAP(中斷可使用)→APP(中斷可使用)→IAP(中斷無法使用)→APP(中斷無法使用)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-17 02:11:56 | 显示全部楼层
news9801 发表于 2018-6-15 08:49
是的,在MCU Reset進入到IAP,在跳到APP 中斷可以使用沒錯,但是在從APP跳回IAP後,中斷便不能使用

動 ...

跳回IAP,将相关寄存器重新复位再设置。否则会影响你的结果。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 04:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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