打印
[STM8]

为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗

[复制链接]
5059|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗

bit.bmp (411.15 KB )

bit.bmp

bit.bmp (411.15 KB )

为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗

为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗
沙发
douyaxiaomai|  楼主 | 2014-10-27 17:15 | 只看该作者
Error[Pe020]: identifier "bit" is undefined D:\用户目录\Desktop\STM8S103F3资料\STM8S103F3库例程\IAR\GPIO\main.c 47

使用特权

评论回复
板凳
596142041| | 2014-10-27 20:52 | 只看该作者
在IAR里面没有bit这数据类型,bit貌似只有51才有吧!

使用特权

评论回复
地板
douyaxiaomai|  楼主 | 2014-10-28 08:36 | 只看该作者
596142041 发表于 2014-10-27 20:52
在IAR里面没有bit这数据类型,bit貌似只有51才有吧!

不是,因为我之前用iar给飞思卡尔的K60编程时是可以使用BIT的

使用特权

评论回复
5
arefeng| | 2014-10-28 08:52 | 只看该作者
可能是关键词不是“BIT”

使用特权

评论回复
6
arefeng| | 2014-10-28 08:54 | 只看该作者

使用特权

评论回复
7
douyaxiaomai|  楼主 | 2014-10-28 10:25 | 只看该作者
STM8如何定义端口?我想像51那样用sbit test=p1^0;我用的是IAR软件
2013-04-07 10:32mjtc901109 | 分类:嵌入式 | 浏览650次
分享到:
2013-04-07 14:07 提问者采纳答题闯关,过关即送礼!快来参加~
STM8不支持位寻址,不能像51那样定义。
可以用(REGx&(1<<n))来取x寄存器的第n位。
用REGx|=(1<<n);来置位x寄存器的第n位。
用REG&|=(~(1<<n));来清零x寄存器的第n位。
提问者评价
谢谢!

使用特权

评论回复
8
lu50211| | 2014-10-28 12:27 | 只看该作者
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;
}MainTabBit_t;
typedef union
{
        MainTabBit_t        标志寄存器;
        unsigned char        Val;
}MainTab_t;
MainTab_t        MainTab[6];
//----------------------------------------------------------------------
#define        Hard标志寄存器                        MainTab[0].Val                        //硬件故障标记
#define        HardCheck标志寄存器                MainTab[1].Val                        //硬件检测标记
#define        Run标志寄存器                        MainTab[2].Val                        //运行工作标记
#define        TempEr标志寄存器                MainTab[3].Val                        //温度故障标记
#define        Key标志寄存器                        MainTab[4].Val                        //按键标记
#define        Time标志寄存器                        MainTab[5].Val                        //时间标记

使用特权

评论回复
9
ccmc| | 2014-10-28 15:23 | 只看该作者
大哥,不是什么编译器都能支持bit关键字的,就算c51也是sbit关键字
用之前花几分钟看看编译器文档吧

使用特权

评论回复
10
xuryan| | 2014-10-28 15:54 | 只看该作者
douyaxiaomai 发表于 2014-10-28 08:36
不是,因为我之前用iar给飞思卡尔的K60编程时是可以使用BIT的

你确定没做梦?IAR K60可以使用bit?

使用特权

评论回复
11
zhuanganwu| | 2014-10-28 17:06 | 只看该作者
没有的。。。。我用IAR写STM8S也试过,bit不能用!

使用特权

评论回复
12
zyz7| | 2016-8-23 09:41 | 只看该作者
8楼方法不错

使用特权

评论回复
13
sxy9150| | 2016-11-11 16:30 | 只看该作者
#include "stdbool.h"后,用bool定义Bit位,不过莫鸟用,还是占用一个字节

使用特权

评论回复
14
wforest68| | 2016-11-12 23:45 | 只看该作者
就是一个宏定义问题,可以自己定义一下,然后就可以用了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝