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");

STM32F4跳转函数的更多相关文章

  1. 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')

    利用PHP的header()函数,可以实现页面跳转,如 header("Location: " . $url); 但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header ...

  2. 微信小程序跳转函数总结

    微信小程序跳转函数总结 ​ 笔者在微信小程序前端的开发过程中,在不同的情况下遇到了需要使用不同的页面跳转逻辑的情况,以下是我对这些函数的使用场景的一个总结介绍. wx.navigateTo 这是最常用 ...

  3. discuz二次开发笔记(二)------跳转函数运用

    前几天在增加修改功能时,突然用到一个提示函数,有点不理解,看了他的由来后果断做下笔记,感觉这在以后的开发中肯定还是要用的上的.有些地方不是很理解,在以后慢慢纠正.查补. Htm页面中用的js跳转: $ ...

  4. sublime ctags跳转函数使用

    sublime 点击某函数 按F12可以查到相关函数文件 正题: 1.下载ctags客户端文件 http://prdownloads.sourceforge.net/ctags/ctags58.zip ...

  5. sublime3跳转函数

    点击Preferences->Browse Packages进入Packages目录,然后打开User目录,查看User目录里面有没有Default (Windows).sublime-mous ...

  6. 简单灵活的 PHP页面跳转函数

    <?         function Location($url = ,) == ,) === ,) ===  ) {                                 $pro ...

  7. 3.STM32F4按键扫描函数

    //按键处理函数 //返回按键值 //mode:0,不支持连续按;1,支持连续按; //0,没有任何按键按下 //1, KEY0 按下 2, KEY1 按下 3, KEY2 按下 4, WKUP 按下 ...

  8. setjmp与longjmp非局部跳转函数的使用

    [root@bogon code]# cat c.c #include<stdio.h> #include<setjmp.h> static jmp_buf env;//定义全 ...

  9. PHP : 封装跳转函数,实现三个页面的跳转

    具体实现:有a,b两个页面,一个跳转页面c,在a执行完后先进行c页面的提示,再跳转到b 1.文件设计: 2.c页面封装方法内容(function.php): a页面内容(a.html): a页面的后台 ...

  10. sublime 函数跳转插件 — ctags 安装和使用

    ctags 是 sublime 下一个函数跳转的插件,可以让你方便地从函数调用的位置跳到函数定义的位置.相对于其他插件,ctags 的安装稍微有点复杂,这里记录下备忘. 首先,假设已经安装 Packa ...

随机推荐

  1. psutil.AccessDenied: psutil.AccessDenied

    解决办法 import psutil for proc in psutil.process_iter(): try: print(proc.name()) except (psutil.NoSuchP ...

  2. C++编程笔记(通信)(win32平台)

    目录 一.初始化网络库 二.socket套接字 2.1服务端 2.2客户端 三.发送.接收数据 3.1发送 3.2接收数据 四.自定义的结构体 4.1 发送端 4.2接收端 IPV6版本套接字的创建 ...

  3. 漫谈计算机网络:应用层 ----- 从DNS域名解析到WWW万维网再到P2P应用

    2022-12-04 18:31:01 纪念一下博主的<漫谈计算机网络>连载博客 浏览量破500了! 今天更新完结篇! 面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽 ...

  4. node-sass报错(Node Sass could not find a binding for your current environment)

    解决方案:参考 https://stackoverflow.com/questions/37986800/node-sass-couldnt-find-a-binding-for-your-curre ...

  5. (小白向)2020-12-18 中国大学MOOC第十二讲-动态变量应用

    1创建单向链表(10分) 问题描述:根据随机输入的若干非零整数,以数字0结束:建立一个新链表. 输入:随机输入若干个整数,以数字0结束 输出:新建链表中个节点的值,数字间没有间隔字符. 样例:输入 5 ...

  6. 使用docker中的MySQL

    简言 好久没写文章了,今天分享一篇将mysql移到docker容器.大家都是程序员,如何安装docker我就不说了.  1. 安装.启动mysql镜像 首先使用 docker search mysql ...

  7. LeetCode HOT 100:在排序数组中查找元素的第一个和最后一个位置

    题目:34. 在排序数组中查找元素的第一个和最后一个位置 题目描述: 给你一个递增数组,和一个目标值target,最终返回数组中第一次出现target和最后一次出现target的下标.如果该数组中没有 ...

  8. JavaScript:七大基础数据类型:数值number及其表示范围

    数值number类型,用来表示任何类型的数字:整数或者浮点数都可以: 实际上,JS中的数值,是一个64位的浮点数,这与Java中的double类型的浮点数是一致的: 但是它有表示的范围,在范围内,JS ...

  9. 数据结构 传统链表实现与Linux内核链表

    头文件: #pragma once #include<stdlib.h> //链表结点 struct LinkNode{ void *data; struct LinkNode *next ...

  10. 【转载】EXCEL VBA 同时选择多个工作表的方法

    如果要用VBA同时选择多个工作表,可以利用数组或设置"Select"方法的参数为"False"来扩展所选择的内容,如下面的一些代码:   1.用工作表名称:   ...