C语言头文件 iomacros.h解读
答案:3 悬赏:60 手机版
解决时间 2021-03-28 13:11
- 提问者网友:最爱你的唇
- 2021-03-27 19:39
C语言头文件 iomacros.h解读
最佳答案
- 五星知识达人网友:零点过十分
- 2021-03-27 21:12
unsigned char no0:1;
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1;
} __BITS8;
typedef struct
{
unsigned short no0:1;
unsigned short no1:1;
unsigned short no2:1;
unsigned short no3:1;
unsigned short no4:1;
unsigned short no5:1;
unsigned short no6:1;
unsigned short no7:1;
unsigned short no8:1;
unsigned short no9:1;
unsigned short no10:1;
unsigned short no11:1;
unsigned short no12:1;
unsigned short no13:1;
unsigned short no14:1;
unsigned short no15:1;
} __BITS16;
typedef struct
{
unsigned long no0:1;
unsigned long no1:1;
unsigned long no2:1;
unsigned long no3:1;
unsigned long no4:1;
unsigned long no5:1;
unsigned long no6:1;
unsigned long no7:1;
unsigned long no8:1;
unsigned long no9:1;
unsigned long no10:1;
unsigned long no11:1;
unsigned long no12:1;
unsigned long no13:1;
unsigned long no14:1;
unsigned long no15:1;
unsigned long no16:1;
unsigned long no17:1;
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1;
} __BITS8;
typedef struct
{
unsigned short no0:1;
unsigned short no1:1;
unsigned short no2:1;
unsigned short no3:1;
unsigned short no4:1;
unsigned short no5:1;
unsigned short no6:1;
unsigned short no7:1;
unsigned short no8:1;
unsigned short no9:1;
unsigned short no10:1;
unsigned short no11:1;
unsigned short no12:1;
unsigned short no13:1;
unsigned short no14:1;
unsigned short no15:1;
} __BITS16;
typedef struct
{
unsigned long no0:1;
unsigned long no1:1;
unsigned long no2:1;
unsigned long no3:1;
unsigned long no4:1;
unsigned long no5:1;
unsigned long no6:1;
unsigned long no7:1;
unsigned long no8:1;
unsigned long no9:1;
unsigned long no10:1;
unsigned long no11:1;
unsigned long no12:1;
unsigned long no13:1;
unsigned long no14:1;
unsigned long no15:1;
unsigned long no16:1;
unsigned long no17:1;
全部回答
- 1楼网友:拾荒鲤
- 2021-03-27 22:57
将名字为NAME的寄存器定义在地址ADDRESS,指定属性为ATTRIBUTE(比如只读,读写等等)
第二个定义和第一个的不同在于这个寄存器可以进行位操作
使用这个2个定义后就可以使用
__IO_REG8(NAME, ADDRESS, ATTRIBUTE)
简短的代替下面一串
__near __no_init volatile ATTRIBUTE unsigned char NAME @ ADDRESS;
十分简单明了
补充:
__near __no_init
这些是特定编译器支持的关键字.....
第二个定义和第一个的不同在于这个寄存器可以进行位操作
使用这个2个定义后就可以使用
__IO_REG8(NAME, ADDRESS, ATTRIBUTE)
简短的代替下面一串
__near __no_init volatile ATTRIBUTE unsigned char NAME @ ADDRESS;
十分简单明了
补充:
__near __no_init
这些是特定编译器支持的关键字.....
- 2楼网友:一叶十三刺
- 2021-03-27 22:46
#ifndef __IO_MACROS_H
#define __IO_MACROS_H
#ifdef __IAR_SYSTEMS_ICC__
#ifndef _SYSTEM_BUILD
#pragma system_include
#endif
#pragma language=save
#pragma language=extended
#define __REG8 unsigned char
#define __REG16 unsigned short
#define __REG32 unsigned long
#define __READ_WRITE
#ifdef __cplusplus
#define __READ
#else
#define __READ const
#endif
#define __WRITE
typedef struct
{
unsigned char no0:1;
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1;
} __BITS8;
typedef struct
{
unsigned short no0:1;
unsigned short no1:1;
unsigned short no2:1;
unsigned short no3:1;
unsigned short no4:1;
unsigned short no5:1;
unsigned short no6:1;
unsigned short no7:1;
unsigned short no8:1;
unsigned short no9:1;
unsigned short no10:1;
unsigned short no11:1;
unsigned short no12:1;
unsigned short no13:1;
unsigned short no14:1;
unsigned short no15:1;
} __BITS16;
typedef struct
{
unsigned long no0:1;
unsigned long no1:1;
unsigned long no2:1;
unsigned long no3:1;
unsigned long no4:1;
unsigned long no5:1;
unsigned long no6:1;
unsigned long no7:1;
unsigned long no8:1;
unsigned long no9:1;
unsigned long no10:1;
unsigned long no11:1;
unsigned long no12:1;
unsigned long no13:1;
unsigned long no14:1;
unsigned long no15:1;
unsigned long no16:1;
unsigned long no17:1;
unsigned long no18:1;
unsigned long no19:1;
unsigned long no20:1;
unsigned long no21:1;
unsigned long no22:1;
unsigned long no23:1;
unsigned long no24:1;
unsigned long no25:1;
unsigned long no26:1;
unsigned long no27:1;
unsigned long no28:1;
unsigned long no29:1;
unsigned long no30:1;
unsigned long no31:1;
} __BITS32;
#define __IO_REG8(NAME, ADDRESS, ATTRIBUTE)
volatile __no_init ATTRIBUTE unsigned char NAME @ ADDRESS
#define __IO_REG16(NAME, ADDRESS, ATTRIBUTE)
volatile __no_init ATTRIBUTE unsigned short NAME @ ADDRESS
#define __IO_REG32(NAME, ADDRESS, ATTRIBUTE)
volatile __no_init ATTRIBUTE unsigned long NAME @ ADDRESS
#define __IO_REG8_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)
volatile __no_init ATTRIBUTE union
{
unsigned char NAME;
BIT_STRUCT NAME ## _bit;
} @ ADDRESS
#define __IO_REG16_BIT(NAME, ADDRESS, ATTRIBUTE,BIT_STRUCT)
volatile __no_init ATTRIBUTE union
{
unsigned short NAME;
BIT_STRUCT NAME ## _bit;
} @ ADDRESS
#define __IO_REG32_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)
volatile __no_init ATTRIBUTE union
{
unsigned long NAME;
BIT_STRUCT NAME ## _bit;
} @ ADDRESS
#pragma language=restore
#endif
#ifdef __IAR_SYSTEMS_ASM__
#define __READ_WRITE 0
#define __READ 0
#define __WRITE 0
#define __IO_REG8(NAME, ADDRESS, ATTRIBUTE)
NAME DEFINE ADDRESS
#define __IO_REG16(NAME, ADDRESS, ATTRIBUTE)
NAME DEFINE ADDRESS
#define __IO_REG32(NAME, ADDRESS, ATTRIBUTE)
NAME DEFINE ADDRESS
#define __IO_REG8_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)
NAME DEFINE ADDRESS
#define __IO_REG16_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)
NAME DEFINE ADDRESS
#define __IO_REG32_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)
NAME DEFINE ADDRESS
#endif
#endif 追问大神,能帮忙解读一下吗?大神,能帮忙解读一下吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯