你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教STM8S位操作的问题.谢谢

[复制链接]
sincomaster 提问时间:2018-8-1 17:46 /
本帖最后由 sincomaster 于 2018-8-4 09:00 编辑

看到别人可以进行位操作,我自己试却有错误,请知道的坛友回下,谢谢

别人的示例可以这样写:
PB_CR1_C11 = 1;
CLK_CCOR_CCOEN = 1;

我包含了stm8s.h也不行,提示左值错误.

请问要包含哪些文件才可以呢,还是哪里设置不对??????

谢谢大家了.
2018-08-01_171725.jpg
收藏 评论15 发布时间:2018-8-1 17:46

举报

15个回答
STM1024 回答时间:2018-8-1 18:50:11
stm8的位操作我没试过,不过stm32的我倒是用过。
你可以试试跟踪到CLK_CCOR_CCOEN 的declaration,看看它是用户自定义的,还是在某个头文件中包含的?

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-8-1 19:22:30
stm1024 发表于 2018-8-1 18:50
stm8的位操作我没试过,不过stm32的我倒是用过。
你可以试试跟踪到CLK_CCOR_CCOEN 的declaration,看看它是 ...

应该是楼主粗心了:这个PB_CR1_C11 = 1;
应该是:
PB_CR1_C1 |= 1;
不是11呀。那个布尔运算符“|“怎么能看成数组”1“呢?
sincomaster 回答时间:2018-8-1 23:24:35
wenyangzeng 发表于 2018-8-1 19:22
应该是楼主粗心了:这个PB_CR1_C11 = 1;
应该是:
PB_CR1_C1 |= 1;

谢谢回答,STDBOOL.H是我想看是不是少加了,C11我没写错,请看下方的RM0016
C:\Users\sinco\Desktop\2018-08-01_231846.png
2018-08-01_231846.png
sincomaster 回答时间:2018-8-1 23:31:27
本帖最后由 sincomaster 于 2018-8-1 23:32 编辑
stm1024 发表于 2018-8-1 18:50
stm8的位操作我没试过,不过stm32的我倒是用过。
你可以试试跟踪到CLK_CCOR_CCOEN 的declaration,看看它是 ...

谢谢新手还不明白什么是跟踪到CLK_CCOR_CCOEN 的declaration,[img][/img]
不明白别人有这样用,我怎么就用不了,stm8s.h 内有定义的呀
2018-08-01_233016.png
feixiang20 回答时间:2018-8-2 01:39:15
自定义一般这样吧
        PC_DDR_DDR1=0;//S_Tx
PC_CR1_C11=1; ////PULL-UP-INPUT
PC_CR2_C21=0; //
        //S_Rx
PC_DDR_DDR1=0;//S_Rx
PC_CR1_C11=1; ////PULL-UP-INPUT
PC_CR2_C21=0; //
//S_BW10
PA_DDR_DDR1=0;//
PA_CR1_C11=1; ////PULL-UP-INPUT
PA_CR2_C21=0;

//S_BW62
PA_DDR_DDR2=0;//
PA_CR1_C12=1; ////PULL-UP-INPUT
PA_CR2_C22=0;

//S_BW125
PB_DDR_DDR3=0;//
PB_CR1_C13=1; ////PULL-UP-INPUT
PB_CR2_C23=0;

//S_FSK
PB_DDR_DDR7=0;//
PB_CR1_C17=1; ////PULL-UP-INPUT
PB_CR2_C27=0;
}

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

sincomaster 回答时间:2018-8-2 08:50:32
feixiang20 发表于 2018-8-2 01:39
自定义一般这样吧
        PC_DDR_DDR1=0;//S_Tx
PC_CR1_C11=1; ////PULL-UP-INPUT

大神,这样写要包含什么头文件呀,我的为什么会报错呢,请您回复一下,谢谢啦
wenyangzeng 回答时间:2018-8-2 09:27:16
sincomaster 发表于 2018-8-1 23:24
谢谢回答,STDBOOL.H是我想看是不是少加了,C11我没写错,请看下方的RM0016

如果要置位PB_CR1的D1位,应该是PB_CR1 |=0X02。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

skyi 回答时间:2018-8-2 09:29:07
首先,看你的贴图宏定义的是常量,楼主你这么写肯定出错,应该是找宏定义是指针类型的寄存器来配置。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

七哥 回答时间:2018-8-2 10:07:26
本帖最后由 toofree 于 2018-8-2 10:09 编辑

没这么玩的吧,

位是这么操作的
傲游截图20180802100710.png

看一下,这个是怎么定义的。不可能给宏定义的常量赋值吧
傲游截图20180802100827.png



评分

参与人数 2ST金币 +1 蝴蝶豆 +4 收起 理由
zero99 + 4
sincomaster + 1 谢谢.FunctionalState这个是枚举类型也看了.

查看全部评分

sincomaster 回答时间:2018-8-2 10:26:15
skyi 发表于 2018-8-2 09:29
首先,看你的贴图宏定义的是常量,楼主你这么写肯定出错,应该是找宏定义是指针类型的寄存器来配置。 ...

谢谢您的回答,不过这个文件是正确的,因为是COSMIC编译器内的stm8s.h中的内容.
sincomaster 回答时间:2018-8-2 10:29:50
wenyangzeng 发表于 2018-8-2 09:27
如果要置位PB_CR1的D1位,应该是PB_CR1 |=0X02。

谢谢您的回答,是可以这样操作,但我看见别人用那种方式更好,比如说:CLK_CCOR_CCOEN = 1和CLK_CCOR |=0x01,用第一种方式能很清楚看到是操作CCOEN,第二种方式就没这么明显了
sincomaster 回答时间:2018-8-2 10:37:01
toofree 发表于 2018-8-2 10:07
没这么玩的吧,

位是这么操作的

谢谢您的回复,您这样说我明白了,头文件太多,刚学没去细看,我刚看了了,可能是COSMIC编译器不支持吧,IAR编译器支持,
sincomaster 回答时间:2018-8-2 10:38:56
谢谢大家的热心回复.看了下风驰大哥的教程,可能是IAR才支持,COSMIC不支持的吧.如下图

2018-08-02_100532.jpg
2018-08-02_100708.jpg
2018-08-02_103245.jpg
ssssss 回答时间:2018-8-2 11:02:59
sincomaster 发表于 2018-8-2 10:38
谢谢大家的热心回复.看了下风驰大哥的教程,可能是IAR才支持,COSMIC不支持的吧.如下图

...

风驰教程在哪里下
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版