当前位置: 首页 > news >正文

IAR中如何而将定义的数组放在指定的位置

在keil中可以使用下面的方法将数组定义到指定的位置

uint8_t g_usart_rx_buf[USART_REC_LEN] __attribute__ ((at(0X20001000)));

但是这个方法在IAR中是用不了的,通过网上查找各种资料,发现了两种可用的方法。我这里测试的单片机是stm32f103c8t6,其他单片机的操作方法是一样的。

第一种方法
先用记事本打开stm32f103xb_flash.icf 这个文件
在这里插入图片描述
里面的代码如下

/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x08000000 ;
define symbol __ICFEDIT_region_ROM_end__     = 0x0801FFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__     = 0x20004FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__   = 0x200;
/**** End of ICF editor section. ###ICF###*/define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };initialize by copy { readwrite };
do not initialize  { section .noinit };place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };place in ROM_region   { readonly };
place in RAM_region   { readwrite,block CSTACK, block HEAP };

在这个文件里面添加下面两行代码

define region RAM_D1_region  = mem:[from 0x20003000 to 0x20004000];  
place in RAM_D1_region {section .RAM_D1}; 

添加完成之后如下
在这里插入图片描述
注意添加的第一行代码中内存地址的范围要在RAM地址范围之内,否则就会出错。这个地址段的名称 “RAM_D1_region” 和“RAM_D1”自己可以随便取。添加完之后保持文件。然后在代码中按照下面这种方式定义数组:

#pragma location = ".RAM_D1"   
uint8_t buf1[10]; /* 接收缓冲, 最大USART_REC_LEN个字节. */

第一行是指定数组定义的位置,第二行是自己定义的数组。
在这里插入图片描述
下面运行代码,在观察窗口中查看数组。
在这里插入图片描述
可以看到数组的起始地址为0x20003000,和刚才设置的一样。

第二种方法
直接在代码中设置数组位置

#define DATA_ADDR 0x20002000
__root  uint8_t buf2[12] @ (DATA_ADDR);   

使用宏定义指定数组位置,当然也可以不用宏定义,直接在数组后面写地址。使用这种方法的话,就不需要修改 stm32f103xb_flash.icf 这个文件内容了,直接使用默认的内容就行。
在这里插入图片描述

直接运行程序,观察数组地址
在这里插入图片描述
可以看到buf2数组的起始地址就从0x20002000 开始了。

这里要注意一个问题,如果使用第2种方法的时候,数组大小必须是4的倍数,否则编译会报错。
比如这里将数组大小设置为10
在这里插入图片描述
这时候编译就会报错。
好了,这两种方法就分享到这,如果后面发现了其他新的方法再补充。

相关文章:

IAR中如何而将定义的数组放在指定的位置

在keil中可以使用下面的方法将数组定义到指定的位置 uint8_t g_usart_rx_buf[USART_REC_LEN] __attribute__ ((at(0X20001000)));但是这个方法在IAR中是用不了的,通过网上查找各种资料,发现了两种可用的方法。我这里测试的单片机是stm32f103c8t6,其他单…...

使用skywalking,grafana实现从请求跟踪、 指标收集和日志记录的完整信息记录

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目, 目前SkyWalking支持Java、 .Net、 Node.js、…...

Ubuntu 20.04 24.04 双网卡 Bond 配置指南

前言:在现代服务器管理中,网络的稳定性和可靠性至关重要。为了提高网络的冗余性和负载能力,我们经常需要配置多个网络接口以实现链路聚合或故障转移。Ubuntu系统自17.10版本起,引入了Netplan作为新的网络配置抽象化工具&#xff0…...

深度学习之目标检测篇——残差网络与FPN结合

特征金字塔多尺度融合特征金字塔的网络原理 这里是基于resnet网络与Fpn做的结合,主要把resnet中的特征层利用FPN的思想一起结合,实现resnet_fpn。增强目标检测backone的有效性。代码实现如下: import torch from torch import Tensor from c…...

2024-2030全球及中国埋线针行业研究及十五五规划分析报告

2023年全球埋线针市场规模大约为0.73亿美元,预计2030年将达到1.37亿美元,2024-2030期间年复合增长率(CAGR)为9.5%。未来几年,本行业具有很大不确定性,本文的2024-2030年的预测数据是基于过去几年的历史发展…...

穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集

题目&#xff1a; 两个方法本质就是决策树的画法不同 方法一解析&#xff1a; 代码&#xff1a; class Solution {private List<List<Integer>> ret;//返回结果private List<Integer> path;//记录路径&#xff0c;注意返回现场public List<List<Int…...

MES系统工作流的单元测试方案

MES系统工作流的单元测试方案 在基于Java实现的MES系统中&#xff0c;若算子组成工作流并通过JSON传递数据&#xff0c;后端解析JSON后执行业务逻辑的流程&#xff0c;单元测试的核心是确保以下内容的正确性&#xff1a; 算子功能的正确性&#xff08;每个算子单独的逻辑&…...

2.学习TypeScript 编译选项配置

自动编译 我们可以使用 tsc ...../.ts -w 命令进行ts文件的自动编译 执行后 编译会持续侦听 自动编译 这种方式只能侦听一个文件 对做项目肯定是不现实的&#xff0c;为了解决这个问题&#xff0c;我们需要添加一个tsconfig.json文件&#xff0c;写入一个基础对象 再有tsconfi…...

计算机网络之王道考研读书笔记-2

第 2 章 物理层 2.1 通信基础 2.1.1 基本概念 1.数据、信号与码元 通信的目的是传输信息。数据是指传送信息的实体。信号则是数据的电气或电磁表现&#xff0c;是数据在传输过程中的存在形式。码元是数字通信中数字信号的计量单位&#xff0c;这个时长内的信号称为 k 进制码…...

【BUG】记一次context canceled的报错

文章目录 案例分析gorm源码解读gin context 生命周期context什么时候cancel的什么时候context会被动cancel掉呢&#xff1f; 野生协程如何处理 案例分析 报错信息 {"L":"ERROR","T":"2024-12-17T11:11:33.0050800","file"…...

[SWPUCTF 2022 新生赛]善哉善哉

右击查看属性 然后放在010查看一下 摩斯密码解码 用佛曰解码 用md5加密看一下 最后一步md5&#xff0c;没有说明编码&#xff0c;尝试utf8和gbk ss4 施主&#xff0c;此次前来&#xff0c;不知有何贵干? import hashlib print(hashlib.md5(ss4.encode(utf8)).hexdigest())f…...

《PCI密码卡技术规范》题目

单选1 在《PCI密码卡技术规范》中&#xff0c;下列哪项不属于PCI密码卡的功能&#xff08;&#xff09;。 A.密码运算功能 B.密钥管理功能 C.物理随机数产生功能 D.随主计算机可信检测功能 正确答案&#xff1a;D. <font style"color:#DF2A3F;">解析&…...

城市大屏设计素材宝库:助力设计师高效创作

城市大屏设计工作要求设计师在有限的时间内打造出令人惊叹的视觉效果&#xff0c;而拥有一套必备的素材集无疑是如虎添翼。这些素材犹如设计师的得力助手&#xff0c;无论是构建整体布局的设计模板&#xff0c;还是点缀细节的图标图形&#xff0c;都能在关键时刻发挥重要作用&a…...

HCIA-Access V2.5_5_1PON系统概述_PON网络概述

PON网络设备有很多各类&#xff0c;可应用于不同的业务场景&#xff0c;从而实现不同的业务&#xff0c;本章介绍PON系统应用组成&#xff0c;分析PON系统的硬件结构和模块功能&#xff0c;描述PON系统的应用场景&#xff0c;帮助你对接入网中设备形态有更深刻的印象。 你可以…...

群落生态学研究进展】Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用

联合物种分布模型&#xff08;Joint Species Distribution Modelling&#xff0c;JSDM&#xff09;在生态学领域&#xff0c;特别是群落生态学中发展最为迅速&#xff0c;它在分析和解读群落生态数据的革命性和独特视角使其受到广大国内外学者的关注。在学界不同研究团队研发出…...

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好&#xff0c;今天给大家分享一个开源的自托管虚拟浏览器项目Neko&#xff0c;旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器&#xff0c;提供…...

职场上,如何做好自我保护?

今天我们讨论一个话题&#xff1a;在职场上&#xff0c;如何保护好自己&#xff1f;废话不多说&#xff0c;我们直接上干货。 &#xff08;一&#xff09; 1.时刻准备一点零食或代餐&#xff0c;如果遇到长时间的会议&#xff0c;就补充点能量。代餐最好选流体&#xff0c;这…...

华为数通最新题库 H12-821 HCIP稳定过人中

以下是成绩单和考试人员 HCIP H12-831 HCIP H12-725 安全中级...

mac iterm2 使用 lrzsz

前言 mac os 终端不支持使用 rz sz 上传下载文件&#xff0c;本文提供解决方法。 mac 上安装 brew install lrzsz两个脚本 注意&#xff1a;/usr/local/bin/iterm2-send-zmodem.sh 中的 sz命令路径要和你mac 上 sz 命令路径一致。 /usr/local/bin/iterm2-recv-zmodem.sh 中…...

PostgreSql-学习06-libpq之同步命令处理

目录 一、环境 二、介绍 三、函数 1、PQsetdbLogin &#xff08;1&#xff09;作用 &#xff08;2&#xff09;声明 &#xff08;3&#xff09;参数介绍 &#xff08;4&#xff09;检测成功与否 2、PQfinish &#xff08;1&#xff09;作用 &#xff08;2&#xff0…...

3步解锁网易云音乐:ncmdumpGUI让你的NCM文件重获自由

3步解锁网易云音乐&#xff1a;ncmdumpGUI让你的NCM文件重获自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的烦恼&#xff1f;在网…...

Pixel Epic智识终端效果展示:跨领域研报生成一致性与专业性验证

Pixel Epic智识终端效果展示&#xff1a;跨领域研报生成一致性与专业性验证 1. 产品概览与核心价值 Pixel Epic智识终端是一款基于AgentCPM-Report大模型构建的专业研究报告生成工具。与传统AI工具不同&#xff0c;它创新性地采用了像素RPG游戏的美学设计&#xff0c;将枯燥的…...

Pixel Dream Workshop 快速上手:Python 零基础入门到生成第一幅AI画作

Pixel Dream Workshop 快速上手&#xff1a;Python 零基础入门到生成第一幅AI画作 1. 前言&#xff1a;为什么选择Pixel Dream Workshop 如果你对AI绘画感兴趣但苦于没有编程基础&#xff0c;这篇教程就是为你量身定制的。Pixel Dream Workshop是一个对新手极其友好的AI绘画工…...

BurpSuite导入P12证书遇到密码问题?3种无密码解决方案实测

BurpSuite导入P12证书遇到密码问题&#xff1f;3种无密码解决方案实测 在企业安全测试和渗透评估过程中&#xff0c;客户端证书认证是常见的防护机制。当BurpSuite提示需要P12证书密码而您又无法获取时&#xff0c;整个测试流程可能陷入僵局。本文将分享三种经过实战验证的解决…...

ProfControl V8的介绍 阵列生成

作者&#xff1a;刘凌波链接&#xff1a;环野电子, profcontrolhttp://oa.profcontrol.cn/teaching_V8-7926f783c6.html来源&#xff1a;ProfControl阵列生成ProfControl支持基于仿射变换的阵列快速生成方式&#xff0c;ProfControl支持对各种对象进行阵列生产&#xff08;包括…...

renren-fast-vue系统配置中心使用指南:灵活配置与动态切换

renren-fast-vue系统配置中心使用指南&#xff1a;灵活配置与动态切换 【免费下载链接】renren-fast-vue renren-fast-vue基于vue、element-ui构建开发&#xff0c;实现renren-fast后台管理前端功能&#xff0c;提供一套更优的前端解决方案。 项目地址: https://gitcode.com/…...

VS Code 效率技巧:符号导航快速定位代码

推荐阅读 技术总监悄悄秀了一把 VS Code 神技&#xff0c;被我狠狠学到了&#xff01; VS Code 又发布了一个 Agent 新玩具&#xff01; VS Code 1.110 官宣 AI 新特性&#xff1a;AI 直接调试浏览器&#xff01; VS Code 2026 效率秘籍&#xff1a;学完无敌&#xff01…...

从Java到AI Agent:传统后端工程师的下一站,不是学AI,是成为系统工程师!

文章探讨了在AI技术发展的背景下&#xff0c;传统后端工程师的转型方向。作者认为&#xff0c;未来的竞争焦点不再是单纯的技术能力&#xff0c;而是如何将AI技术融入现有系统&#xff0c;构建自动化系统。文章提出了AI Agent工程师的概念&#xff0c;强调系统工程能力的重要性…...

用Python和Geogebra手把手复现阿克曼转向模型(附完整代码与可视化)

用Python和Geogebra手把手复现阿克曼转向模型&#xff08;附完整代码与可视化&#xff09; 在自动驾驶和机器人领域&#xff0c;理解车辆如何转向是基础中的基础。但当你第一次看到那些复杂的公式时&#xff0c;是不是感觉像在看天书&#xff1f;别担心&#xff0c;今天我们就用…...

如何高效使用猫抓插件:浏览器资源嗅探实用指南

如何高效使用猫抓插件&#xff1a;浏览器资源嗅探实用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化时代&#xff0c;我们每天浏览网…...