OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 419|回复: 7

IAP與APP相互轉跳

[复制链接]

  离线 

1

主题

4

帖子

0

精华

新手上路

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

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

APPLICATION_ADDRESS = 0x08008000;

[C] 纯文本查看 复制代码
			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();		



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

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

回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手上路

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

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

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

使用道具 举报

  离线 

9

主题

56

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手上路

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

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

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

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

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

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131558
金钱
131558
注册时间
2010-12-1
在线时间
1207 小时
发表于 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

精华

新手上路

积分
26
金钱
26
注册时间
2018-6-13
在线时间
4 小时
 楼主| 发表于 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(中斷無法使用)
回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131558
金钱
131558
注册时间
2010-12-1
在线时间
1207 小时
发表于 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
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则




关闭

必看:"原子哥”力荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-8-18 05:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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