[MCU] 后面不加@指定地址有没有问题

[复制链接]
2311|40
llia 发表于 2020-6-21 18:15 | 显示全部楼层
@就是指定地址,这个应该没什么好说的了,大部分编译器都这么用。
gongche 发表于 2020-6-21 18:21 | 显示全部楼层
在宏定义里面都有一个关键字__no_init
wenfen 发表于 2020-6-21 18:24 | 显示全部楼层
__no_init是IAR扩展语法里面的一个扩展关键字
llljh 发表于 2020-6-21 18:27 | 显示全部楼层
@是一种语法。那么它的作用很明显就是将变量放置到对应的地址中。
pengf 发表于 2020-6-21 18:30 | 显示全部楼层
@是指定地址
liuzaiy 发表于 2020-6-21 18:36 | 显示全部楼层
后面不加@指定地址没有问题。
chenjunt 发表于 2020-6-21 18:40 | 显示全部楼层
__no_init 不初始化
xxmmi 发表于 2020-6-21 18:44 | 显示全部楼层
__no_init 是两个宏,这个是编译器定的
lium 发表于 2020-6-21 18:47 | 显示全部楼层
no_init用于变量声明。 以 MSP430系列单片机为例, 在默认情况下, MSP430的 C 语言 编译器将变量存放在主 RAM 中, 并在启动时对其进行初始化。
langgq 发表于 2020-6-21 18:50 | 显示全部楼层
定义到不初始化的块中去。
huanghuac 发表于 2020-6-21 18:57 | 显示全部楼层
定义全局变量的时候比如int char;  即使你没有赋值给他,编译器还是会给他一个初始化值0
tian111 发表于 2020-6-21 19:01 | 显示全部楼层
使用@,一个变量可以明确的制定一个存储地址。
llljh 发表于 2020-6-21 19:05 | 显示全部楼层
用是声明一个non-volatile类型的内存地址(Support non-valotile memory)。
renyaq 发表于 2020-6-21 19:09 | 显示全部楼层
查看了《MSP430 IAR C/EC++ Compiler Reference Guide》内的IAR Language Extension Overview
llljh 发表于 2020-6-21 19:16 | 显示全部楼层
define DEFC(name, address) __no_init volatile unsigned char name @ address;
#define DEFC(name, address) sfrb name = address;
这两种定义是等价的
xxrs 发表于 2020-6-21 19:20 | 显示全部楼层

具体什么意思我不大清楚。
morrisk 发表于 2020-6-21 19:23 | 显示全部楼层
@ address  指定具体存储位置,volatile 非易失性的。
guoyt 发表于 2020-6-21 19:33 | 显示全部楼层
用no_init主要是为了防止看门狗导致系统复位后数据重初始化。
zhuww 发表于 2020-6-21 19:36 | 显示全部楼层
在 no_init变量的声明中,不能含有初始化。
 楼主| jiaxw 发表于 2020-6-21 19:40 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0