[STM8] ST单片机C语言有什么指令定义端口的某一位做变量?

[复制链接]
7978|11
 楼主| xiangfeizi 发表于 2010-10-18 17:28 | 显示全部楼层 |阅读模式
C语言里可以用sbit指令将端口的某一位定义成变量,不过在STVD里该指令好象不能被识别,编译也通不过。请问ST单片机该用什么指令来将端口的某一位定义成变量呢?请多指教,谢谢!
jgphu 发表于 2010-10-18 17:38 | 显示全部楼层
_Boot  来定义某一位
 楼主| xiangfeizi 发表于 2010-10-18 17:52 | 显示全部楼层
能不能麻烦你给个示例,具体格式是什么样的?
jgphu 发表于 2010-10-18 18:25 | 显示全部楼层
typedef struct
{
        _Bool Bit0;
        _Bool Bit1;
        _Bool Bit2;
        _Bool Bit3;
        _Bool Bit4;
        _Bool Bit5;
        _Bool Bit6;
        _Bool Bit7;
}SBitChar;
jgphu 发表于 2010-10-18 18:25 | 显示全部楼层
typedef struct
{
        _Bool Bit0;
        _Bool Bit1;
        _Bool Bit2;
        _Bool Bit3;
        _Bool Bit4;
        _Bool Bit5;
        _Bool Bit6;
        _Bool Bit7;
}SBitChar;

typedef struct
{
        SBitChar ODR;
        SBitChar IDR;
        SBitChar DDR;
        SBitChar CR1;
        SBitChar CR2;
}GPIO;

volatile   GPIO   PA @ 0x5000;
volatile   GPIO   PB @ 0x5005;
volatile   GPIO   PC @ 0x500a;
volatile   GPIO   PD @ 0x500f;
volatile   GPIO   PE @ 0x5014;
volatile   GPIO   PF @ 0x5019;
volatile   GPIO   PG @ 0x501e;
volatile   GPIO   PI @ 0x5028;
jgphu 发表于 2010-10-18 18:26 | 显示全部楼层
例如: PA.ODR.Bit1 = 1;   表示PA1输出为高电平
 楼主| xiangfeizi 发表于 2010-10-18 21:13 | 显示全部楼层
老大,PA.ODR.Bit1=1;怎么编译不能通过啊?前面的方式好象不是定义端口的位吧,是自己定义的寄存器的位吧?
cp17951 发表于 2010-10-18 22:38 | 显示全部楼层
jgphu 发表于 2010-10-19 09:55 | 显示全部楼层
就是端口定义的位啊,你把那个结构体在头文件里写上,在C文件的程序里写PA.ODR.Bit1=1。怎么可能编译不通过。。。
hgjinwei 发表于 2010-10-19 18:39 | 显示全部楼层
还是用标准C好看点吧:
typedef struct
{
        unsigned char Bit0 : 1;
        unsigned char Bit1 : 1;
        unsigned char Bit2 : 1;
        unsigned char Bit3 : 1;
        unsigned char Bit4 : 1;
        unsigned char Bit5 : 1;
        unsigned char Bit6 : 1;
        unsigned char Bit7 : 1;
}SBitChar;
grant_jx 发表于 2010-10-19 19:32 | 显示全部楼层
用COSMIC的话,找一下它的帮助文档,查一下bitfield的用法。
xuannin 发表于 2010-10-19 19:48 | 显示全部楼层
简单:
_Bool TEST   @ PD_ODR:4;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

62

帖子

0

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