JMP2APP

void JMP2APP(void)
{ pFunction Jump_To_Application;
uint32_t JumpAddress; if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{
//将使用过的中断和外设全部关闭
// NVIC->ICER[TIM7_IRQn/32]|=1<<TIM7_IRQn%32;
// NVIC->ICER[TIM3_IRQn/32]|=1<<TIM3_IRQn%32;
// NVIC->ICER[TIM4_IRQn/32]|=1<<TIM4_IRQn%32;
NVIC->ICER[OTG_FS_IRQn/32]|=1<<OTG_FS_IRQn%32; SysTick->CTRL&=~(1<<0);
SysTick->CTRL&=~(1<<1);
SysTick->LOAD=0;
RCC->APB1ENR&=~(1<<1); //TIM3时钟关闭
RCC->APB1ENR&=~(1<<2); //TIM4时钟关闭
RCC->APB1ENR&=~(1<<5); //TIM7时钟关闭
RCC->APB2ENR&=~(1<<0); //TIM1时钟关闭
RCC->APB2ENR&=~(1<<1); //TIM8时钟关闭
RCC->AHB2ENR&=~(1<<7); //关闭USB OTG时钟 ADC3->CR1=0;
ADC3->CR2=0; //关闭AD转换器 UART4->CR1 = 0;
UART4->CR3 = 0;
UART5->CR1 = 0;
UART5->CR3 = 0;
USART6->CR1 = 0;
USART6->CR3 = 0;
USART1->CR1 = 0;
USART1->CR3 = 0; DMA2_Stream0->NDTR=0;
DMA2_Stream0->CR=0; //关闭ADC的DMA传输
DMA2_Stream1->NDTR=0;
DMA2_Stream1->CR=0;
DMA2_Stream2->NDTR=0;
DMA2_Stream2->CR=0; DMA1_Stream7->NDTR=0;
DMA1_Stream7->CR=0; //关闭DMA传输
DMA1_Stream5->NDTR=0;
DMA1_Stream5->CR=0; //关闭DMA传输
DMA1_Stream2->NDTR=0;
DMA1_Stream2->CR=0; //关闭DMA传输
DMA1_Stream0->NDTR=0;
DMA1_Stream0->CR=0; //关闭DMA传输 RCC->APB2ENR&=~(1<<10); //关闭ADC3
RCC->AHB1ENR&=~(1<<21);//DMA1时钟关闭
RCC->AHB1ENR&=~(1<<22);//DMA2时钟关闭 RCC->APB1ENR&=~(1<<19); //关闭USART4
RCC->APB1ENR&=~(1<<20); //关闭USART5
RCC->APB2ENR&=~(1<<4); //关闭USART1
RCC->APB2ENR&=~(1<<5); //关闭USART6
RCC->APB2ENR&=~(1<<14); //关闭SYSCFG时钟 /* Jump to user application */
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress; //control_flag = __get_CONTROL();
__set_CONTROL(0); //重置CONTROL,使线程模式处于特权等级,使用主栈指针
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
__set_PSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
Jump_To_Application();
}
}

跳转后的代码

SCB->VTOR = 0x08000000 | (0x20000 & (uint32_t)0x1FFFFF80);  //重映射到0x08020000
__asm("CPSIE I");

最新文章

  1. 网站缓存数据到tomcat服务器
  2. JS中遍历普通数组和字典数组的区别
  3. HW7.5
  4. matlab高斯模板生成,K是归一化系数,上面是一个半径200的高斯模板用来做MSR
  5. Fibonacci数列的java实现
  6. Asp.net MVC 视图使用像Ajax,ViewBag提示为找到上下文
  7. AtCoder Beginner Contest 071 D - Coloring Dominoes
  8. C语言笔试经典-查找多位数重复数字以及次数
  9. 【转】用信鸽来解释 HTTPS
  10. 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解
  11. [复习]动态dp
  12. [codechef July Challenge 2017] Calculator
  13. [转帖]Mysql 最简单的参数调优配置
  14. 团队Git使用教程
  15. MySQL Crash Course #03# Chapter 5. 6 排序. BETWEEN. IS NULL
  16. POJ 2229 Sumsets(技巧题, 背包变形)
  17. ORM 查询
  18. Oracle 左连接(+)加号用法及常用语法之间的关系
  19. _heap_alloc_base 奔溃,奔溃原因:堆被破坏
  20. Controlling Session Behavior in Asp.Net MVC4

热门文章

  1. Centos 7.6 安装部署 openGauss 3.1.0 企业版一主两备集群
  2. webrtc编译,不使用内置boringssl,使用openssl的
  3. Vscode连接gitee远程仓库
  4. linux mint 归档管理器报错Extraction not performd
  5. CompletionService 使用小结
  6. EndNote设置导出参考文献格式为中文国标GBT7714
  7. Qt网络编程-书接上文,浅谈TCP文件收发,以及心跳包
  8. 第一百一十四篇: JS数组Array(三)数组常用方法
  9. JavaScript冒泡排序+Vue可视化冒泡动画
  10. 巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)