访问电脑版页面

导航:老古开发网手机版STM32单片机Keil MDK编程

Keil MDK3.20的stm32调试方法

导读:
关键字:
STM32,RAM,

1. 程序在RAM中运行

要点:(1)程序的下载地址改到RAM空间中

(2)程序的debug之前要设定SP,PC指针到Ram空间

新建工程,选择STM32 的具体型号,我买的万利的开发板,选择stm32f103Vb。

Keil MDK3.20的stm32调试方法

设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。

Keil MDK3.20的stm32调试方法

空间大小如何分配取决于自己的需求。本款处理器内部ram大小为20K,分配16K给只读区,4K给可读可写区。这样IROM设定的大小为0x4000,IRAM1的起始就变为0X20004000,大小只剩下0X1000。

Debug标签选择ULINK1 Cortex Debugger(软件采用yjgyiysbCC兄crack方法)。不选Load ApplICaTIon at Start,在IniTIalizaTIon中加入启动脚本RAM.ini。

Keil MDK3.20的stm32调试方法

RAM.ini中具体内容如下:

FUNC void Setup (void) {

SP = _RDWORD(0x20000000); // Setup Stack Pointer

PC = _RDWORD(0x20000004); // Setup Program Counter

_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register

}

LOAD XXX.axf INCREMENTAL // Download,红色代表工程文件名.axf

Setup(); // Setup for Running

g, main

UTIlities下Update Target before Debugging不选

这样添加后就可以在RAM中调试了。

>>>>>>我们需要在代码中设置正确的中断向量表位置。中断向量表通常被放置在用户程序的开始,所以flash中运行时,向量表位于0x08000000处,而当代码被放置在SRAM中运行时,他的位置就成了0x20000000。在初始化NVIC时,我们可以放置如下代码,定义向量表的位置

NVIC_SetVectorTable(0x20000000 , 0x0);

NVIC_SetVectorTable(0x08000000 , 0x0);

Keil MDK3.20的stm32调试方法

>>>>>工程选项中Debug项,Download选项卡中,去掉所有钩子,不下载代码到flash,这样就可以在RAM中调试程序了!

2. Flash中调试

新建工程后系统默认设定好IROM1为FLASH的地址和空间大小。只需要两步:

1) 设定调试工具为ULINK1 CORTEX DEBUGGER,如下图所示,不需要设定起始脚本。

Keil MDK3.20的stm32调试方法

2) 在Utility中设定选择ULINK1 cortex debugger,并设定编程算法。如下图所示。

Keil MDK3.20的stm32调试方法

Keil MDK3.20的stm32调试方法

之后就可以FLASH调试了。

硬件:万利的 EK-STM32F开发板,硬件去掉RS3,RS4 排阻,断开开发板本身的仿真器。

软件:KEILMDK3.20+ULINK驱动替换文件。

来源:网络整理   作者:city_prolove  2018/4/4 11:49:00
栏目: [ STM32单片机Keil MDK编程]

相关阅读

keil4和keil5的区别以及Keil5的安装激活教程解析

如何在STM32单片机的MDK工程中使用printf

KEILv5 STM32 程序在APP与BOOTLOADER共用方法

基于STM32对DS1302的驱动

Keil MDK3.20的stm32调试方法

STM32的数据类型基础介绍

基于keil mdk 标准外设库的软件开发

获取STM32 MCU唯一ID的方法

KEIL工具可通过MPS对基于CORTEX-M处理器的系统建立样机

STM32F4 C++ 封装库 之 EXTI

STM32单片机半主机模式的应用

基于stm32的keil开发环境搭建

基于Keil 5版本单片机编程软件中MDK的应用技巧解析

如何构建STM32单片机keil的开发环境

基于STM32的MDK程序启动

STM32单片机在KIEL4配置开发中的设置

stm32之.hex 文件

stm32笔记: 将用户自定义关键字从MDK3.8 搬到 MDK4.70A

关于ARM MDK使用STM32F4xx 硬件浮点单元的话题

如何创建一个STM32工程模板