| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> bootloader | 基于STM32F407 - 使用STM32Cubeprogrammer的USB DFU进行固件烧写 -> 正文阅读 |
|
[嵌入式]bootloader | 基于STM32F407 - 使用STM32Cubeprogrammer的USB DFU进行固件烧写 |
文章目录一、前言
实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说 为了实验通过应用程序进入bootloader,然后通过usb,uart等外设升级mcu的升级,我准备了两份工程代码: 二、硬件部分2.1、stm32-v5开发板
2.2、stm32-v5原理图这个micro usb插座实际连接到stm32f407IGT6的PA11与PA12引脚,如上图所示。 三、KEIL3.1、Device Target根据安富莱的教程,如果使用AC6编译器的话,另外还需要在keil上设置一些配置。 3.2、LinkerAC6编译器的话,需要修改.sct文件。
接着,重新编译整个工程!!一定要重新编译!!! 四、代码4.1、main.c
五、实验开始5.1、烧录boot文件夹的工程代码烧录代码成功后,LD1开始以100ms的间隔闪烁。 从代码可以看到,当按下K1按钮后,LD2将不再闪烁。因为程序跳转到bootloader程序那里去了。 5.2、stm32CubeProgrammer打开软件之后,选择USB方式,再点击Connect。 六、细节补充6.1、变量g_JumpInit究竟被存放在哪里?通过修改.sct文件与按照以下的方式定义变量g_JumpInit后,它真的被存放在RAM2里边了吗?为此我通过.map文件来确认。 6.2、进入bootloader程序后,MCU真的运行在内存0x1FFF0000~0x1FFF77FF吗?通过debug模式,当按下按钮KEY1后,通过PC寄存器可以看到,程序运行在内存地址0x1FFF149F,这个内存地址就是在0x1FFF0000 ~ 0x1FFF77FF之间。 6.3、变量g_JumpInit一定要存放在RAM2里面吗?变量g_JumpInit并不一定要放在RAM2里面,在实际项目中,有的人会把它放在外部flash里,或者内部flash。目的是避免复位cpu时,变量g_JumpInit也跟着复位。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:54:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |