当前位置:首页 > 单片机 > 单片机
[导读]步骤与图示:1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小如图1(STM32F107VC 256KB FLASH,64KB SRAM)图12.Target的设置1)勾上可以用微库,减小生成代码的大小2,3)分别定义ROM区位

步骤与图示:

1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小如图1


(STM32F107VC 256KB FLASH,64KB SRAM)

图1

2.Target的设置

1)勾上可以用微库,减小生成代码的大小

2,3)分别定义ROM区位置及大小和RAM区位置和大小。在这里需要说明的是,Cortex-M3的架构有4G的寻址空间,而Flash的起始地址在0x08000000,RAM地址在0x20000000,在这里进行了第一次相关地址的更改;如图2

0x1000为4K,这里的0xc000则为48K的ROM分配;RAM的为16K;基本上移植个uCOS-II都够用了


图2

3.Output的设置

选择Remout文件夹

强调一下Name of Executable吧;这里默认的应该是project的名字,改成output;而且这与编译后产生的*.axf和*.sct文件名字都有关联;没勾选HEX;见图3


图3

4.Listing Label 默认

5.User Label 默认

6.C/C++ Label 默认

7. Asm Label 默认

8. Linker Label

最上边打上勾,是这效果;不打勾,就反白了

先说说打勾的时候,如图4;非人为操作,你什么都不用管了,(很多人会发现,新建的项目,刚开始的时候下面的Scatter File后的内容是空的,当你把这勾去掉后会自动出现,然后随你勾与不勾,就都是存在的了,不过此时还只是个影子,没有实际的文件,什么时候出现这个文件呢,法一:自然你可以自己写;法二:在出现影子后打上勾编译一次,此文件就产生了;在output的文件夹里;马上后文还会有对此文件内容的介绍)



图4

再说说不打勾的时候会反白一些内容,如图5,需要修改两个地方

图5

再来看看output.sct文件内容,如图6~6行内容是ROM的地址和大小,11行事RAM的地址和大小,很是一目了然,内容根据Target自动生成的,不需要手动修改


图6


LR_IROM1 0x20000000 0x0000C000 { ;load region size_region

ER_IROM1 0x20000000 0x0000C000{ ;load address = executionaddress

*.o (RESET, +First)

*(InRoot$$Sections)

.ANY (+RO)

}

RW_IRAM1 0x2000C000 0x00004000{ ;RW date

.ANY (+RW +ZI )

}

}

9.Debug的配置

分成几部分,原界面和Setting界面

1)原界面,如图7,首先选好J-link ,在keil5下,选择“CMSIS-DAP Debugger”,取消Load Application at Startup的勾选

图7

再说说这个RAM.ini文件,内容如下,如图8,有注释

首先LOAD output.axf,加载启动代码到RAM,关关于hex,bin文件和axf的关系,是在axf中存有Debug需要的一些调试语句,所以这文件与前2者内容上是不相同的,前两者属于其子集的关系,(这里的output.axf名字对应了我们上边设定的output的文件名设定,此文件在output中设定的文件夹下生成,跟output.sct在一起)从文件内容可以看到,中断向量表已经被映射到0x20000000,PC也指向了0x20000004,说明在RAM中进行调试时理论上可以的了

图8

RAM.INI文件:

/******************************************************************************/

/* RAM.INI: RAM Initialization File */

/******************************************************************************/

/* This file is part of the uVision/ARMdevelopment tools. */

/* Copyright (c) 2010 Keil - An ARMCompany. All rights reserved.*/

/* This software may only be used under theterms of a valid, current, */

/* end user licence from KEIL for acompatible version of KEIL software*/

/* development tools. Nothing else givesyou the right to use this software. */

/******************************************************************************/

FUNC void Setup (void) {

SP= _RDWORD(0x20000000); // SetupStack Pointer

PC= _RDWORD(0x20000004); // SetupProgram Counter

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

}

LOAD..RemoutProject.axfINCREMENTAL //Download

Setup(); // Setup forRunning

g, main

()

2)进入setting如图9


图9

3)然后进入了Flash Download label,如图10~Flash的擦写有规矩,需要在有内容的情况下擦出一个扇区后方可写入,而此时的RAM自然不必要这样做,然后需要点击add添加Flash编程算法接着进入了选择界面,如图11


图10

在这里选择好属于自己的芯片Flash大小~256K ~

add后还需要再更改最后一行红线上的内容,此时需要先点一下刚选好的变成算法就会反白可编辑,然后编程算法会自动更改其自身的地址




图11

10.进入Utilities~同Debug一样,选择其中的setting其实刚刚讲过,其实是同一个,如图12

图12

RAM调制到此为止

需要提醒大家注意的几点是:

1.Debug开始后~不要点reset~因为这样后走的就是Flash的程序了~容易造成调试问题~结果是产生keil被kill掉的PC错误~

2.重新启动开发板后一定要build target一次~或者rebuild all一次再烧写程序~不然~很容易同上


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式开发中,STM32的时钟系统因其灵活性和复杂性成为开发者关注的焦点。然而,看似简单的时钟配置背后,隐藏着诸多易被忽视的陷阱,轻则导致系统不稳定,重则引发硬件损坏。本文从时钟源选择、PLL配置、总线时钟分配等关键环...

关键字: STM32 时钟系统

在嵌入式系统开发中,STM32系列微控制器的内部温度传感器因其低成本、高集成度特性,广泛应用于设备自检、环境监测等场景。然而,受芯片工艺差异和电源噪声影响,其原始数据存在±1.5℃的固有误差。本文从硬件配置、校准算法、软...

关键字: STM32 温度传感器

在能源效率与智能化需求双重驱动下,AC-DC转换器的数字控制技术正经历从传统模拟方案向全数字架构的深刻变革。基于STM32微控制器的PFM(脉冲频率调制)+PWM(脉冲宽度调制)混合调制策略,结合动态电压调整(Dynam...

关键字: AC-DC STM32

当前智能家居产品需求不断增长 ,在这一背景下 ,对现有浇花装置缺陷进行了改进 ,设计出基于STM32单片机的全 自动家用浇花机器人。该设计主要由机械结构和控制系统构成 ,机械结构通过麦克纳姆轮底盘与喷洒装置的结合实现机器...

关键字: STM32 麦克纳姆轮 安全可靠 通过性强

用c++编程似乎是让你的Arduino项目起步的障碍吗?您想要一种更直观的微控制器编程方式吗?那你需要了解一下Visuino!这个图形化编程平台将复杂电子项目的创建变成了拖动和连接块的简单任务。在本文中,我们将带您完成使...

关键字: Visuino Arduino ESP32 STM32

基于STM32与LoRa技术的无线传感网络凭借其低功耗、广覆盖、抗干扰等特性,成为环境监测、工业自动化等场景的核心解决方案。然而,如何在复杂电磁环境中实现高效休眠调度与动态信道优化,成为提升网络能效与可靠性的关键挑战。本...

关键字: STM32 LoRa

在实时控制系统、高速通信协议处理及高精度数据采集等对时间敏感的应用场景中,中断响应延迟的优化直接决定了系统的可靠性与性能上限。STM32系列微控制器凭借其灵活的嵌套向量中断控制器(NVIC)、多通道直接内存访问(DMA)...

关键字: STM32 DMA

数字电源技术向高功率密度、高效率与高动态响应方向加速演进,STM32微控制器凭借其基于DSP库的算法加速能力与对LLC谐振变换器的精准控制架构,成为优化电源动态性能的核心平台。相较于传统模拟控制或通用型数字控制器,STM...

关键字: STM32 数字电源

STM32微控制器凭借其针对电机控制场景的深度优化,成为高精度、高可靠性驱动系统的核心选择。相较于通用型MCU,STM32在电机控制领域的核心优势集中体现在FOC(磁场定向控制)算法的硬件加速引擎与PWM死区时间的动态补...

关键字: STM32 电机控制

无线充电技术加速渗透消费电子与汽车电子领域,基于Qi协议的无线充电发射端开发成为智能设备能量补给的核心课题。传统模拟控制方案存在响应滞后、参数调整困难等问题,而基于STM32的数字PID控制结合FOD(Foreign O...

关键字: STM32 无线充电
关闭