程序从自己写的IAP到应用APP的程序 自动重启处理方法

程序从自己写的IAP到应用APP的程序 自动重启处理办法:
我使用的是stm32 F103 F105 H750的单片机处理方法:
在boot中加入以下处理代码:
在boot跳转到app的之前执行的步骤:
1,关闭总中断
2,关闭系统systick
3,关闭外设所有中断
4,清除所有中断标志
5,清除所有中断挂起标志
6,关闭所有外设中断
7,打开总中断

在boot跳转到app的之前执行的代码:`

    // 关闭全局中断
    __set_PRIMASK(1);
	// 关闭滴答定时器,复位到默认值 
	SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;
	//
	for(i = 0; i < 8; i++) 
	{
		NVIC->ICER[i] = 0xFFFFFFFF; // 关闭中断
		NVIC->ICPR[i] = 0xFFFFFFFF; // 清除中断标志位
		//
		__DSB();
		__ISB();
	}
	//
	SysTick->CTRL = 0;
	SysTick->LOAD = 0;
	SysTick->VAL = 0;
    //开总中断
    __set_PRIMASK(0);

在应用APP初始化的时候加一下汇编中系统初始代码
system_*.c 文件中的SystemInit函数 也就是汇编起始进入的函数
在函数的开头加入:

//关闭总中断
__set_PRIMASK(1);
//关闭系统systick
OS_Tick_Disable();
// 在RTOS工程,这条语句很重要,设置为特权级模式,使用MSP指针
__set_CONTROL(0);
..............
在函数末尾加入
//开启总中断
__set_PRIMASK(1);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值