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

关键词在线挖掘网站个人注册域名和公司注册域名区别

关键词在线挖掘网站,个人注册域名和公司注册域名区别,php网站建设,做天猫网站多少钱在keil中可以使用下面的方法将数组定义到指定的位置 uint8_t g_usart_rx_buf[USART_REC_LEN] __attribute__ ((at(0X20001000)));但是这个方法在IAR中是用不了的,通过网上查找各种资料,发现了两种可用的方法。我这里测试的单片机是stm32f103c8t6,其他单…

在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
在这里插入图片描述
这时候编译就会报错。
好了,这两种方法就分享到这,如果后面发现了其他新的方法再补充。

http://www.yayakq.cn/news/456155/

相关文章:

  • 我们网站在那里登陆后台系统管理照片一键生成视频的软件
  • 网站推广公司兴田德润电话多少品牌vi设计方案
  • 相馆网站建设费用预算西安比较厉害的软件公司
  • 网站推广软件推荐前端做任务的网站
  • 如何开始做婚恋网站新能源网站建设
  • 网站多少钱一年用ps怎么做网站首页
  • 如何用ae做模板下载网站宜昌市网站建设
  • 查找网站威海外贸网站建设电话
  • 网站设计流程是文昌网站建设 myvodo
  • 免费建设游戏对战平台网站越秀定制型网站建设
  • 网站建设公司有前途吗企业免费邮箱注册申请
  • 如何做网站编辑代码网站开发涉及到缓存吗
  • spring框架做网站怎么做网页菜单
  • 在网上做黑彩网站会怎样食品经营许可证
  • 营销型网站软件重庆logo设计图片
  • 网站建设捌金手指花总二门户网站的建设方案
  • 招聘企业网站建设模块常用的电子商务网站开发技术
  • 厦门建设企业网站建设工程造价管理
  • 网站做流量怎么赚钱的建设手机版网站
  • 免费1级做爰片在线观看网站投资理财产品网站建设
  • 北京网站seo排名重庆网站建设选承越
  • 站长工具seo下载瑞安外贸网站制作
  • 养殖网站 模板服装网站建设方法
  • 安防公司网站模板科技项目的类型有
  • 浙江工信部网站备案查询工厂网站开发
  • 网站后台培训嘉兴做网站优化多少钱
  • 南宁网站建设官网济南房产网签查询系统
  • 全屏的网站商业网站开发实训心得体会范文
  • 绑定网站域名怎么做可以网站可以做免费的文案广告
  • 英语培训机构网站建设策划书wordpress中英文插件