野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14513|回复: 10

关于单片机位操作问题

[复制链接]
发表于 2016-8-15 12:24:35 | 显示全部楼层 |阅读模式
本帖最后由 ㄗs-.蝸牛· 于 2016-8-15 13:29 编辑

以前用8位单片机的时候可以直接定义一个位,51咋定义的我不太清楚,sbit ?还是啥?没用过51 0.0

PIC我知道可以直接写成  bit xx就可以了,然后在程序里对这个xx可以任意 写1 或 写0

可是后来接触了stm32发现,bit 已经不能用了,编译会报错,而且原因貌似是已经不支持位操作了,普通IO翻转竟然变成了奢求...后来看了些相关资料用位带操作,木哈哈哈

可是问题来了,貌似8位以上的单片机已经都不支持位操作了(目前个人接触过的,具体别的有没有不敢下定论),而又没有CM3这样的支持位带操作,那要怎么办?

问了很多人说,费那鸟事直接 u8 xx 就OK了,其实我也是这么用的,反正最低位有效

公司有的人是这样用的,定义了一个结构体,小白表示结构体什么的没玩明白...他大概是这么写的

struct BIT
{
   unsigned  a :1;
   unsigned  b :1;
   ....
   一共有8个
}Flage;

语法有错误请忽略,因为我也只是大概看了一眼...

调用比如 Flage.a = 0;

他说用C的方式把一个8位的东东 分开了,可以1位1位的操作。

但是我想问了,这虽然在用C把这个8位 拆分开了,看起来像是在位操作,可是MCU本身都不支持了位操作这样意义何在?编译器是没有报错,但是看起来不是这么回事吧?

分配地址的时候是不是对这个里面的成员a b什么的分配的地址还是一个8位?之前有听谁说过类似的事,当时没遇到过就没在意....

小白向各位大神求教~~~~

以上所指的单片机 是即不支持位操作也没有位带的单片机。
回复

使用道具 举报

发表于 2016-8-15 12:35:31 | 显示全部楼层
没看懂你在说什么,但是我猜你大概是想问怎么对STM32的IO的一位一位操作,STM32的一位一位操作也是比较简单,叫位带操作,你可以去看一看相关知识
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-8-15 13:25:20 | 显示全部楼层
满地落叶est 发表于 2016-8-15 12:35
没看懂你在说什么,但是我猜你大概是想问怎么对STM32的IO的一位一位操作,STM32的一位一位操作也是比较简单 ...

STM32我知道该怎么做,位带什么的我也会,我的意思是别的单片机的话即不支持位操作,又不支持位带的情况下,那种定义的方式有什么意义
回复 支持 反对

使用道具 举报

发表于 2016-8-15 13:50:15 | 显示全部楼层
这种C语法叫位域,不过我也没有在stm32上用过
回复 支持 反对

使用道具 举报

发表于 2016-8-15 14:14:39 | 显示全部楼层
位域啊,具体案例推荐看ADS1232的驱动,对寄存器的封装非常巧妙。看懂后,拿STM32的GPIO重新封装测试下,个人玩过几次,但实际项目不高兴用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-15 14:20:00 | 显示全部楼层
flyleaf 发表于 2016-8-15 13:50
这种C语法叫位域,不过我也没有在stm32上用过

大神有没有玩过不支持位操作的单片机呢?定义一个位变量怎么玩?我一直用u8...别人也推荐u8说这样还是比较快的......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-15 14:20:16 | 显示全部楼层
十一月的萧邦 发表于 2016-8-15 14:14
位域啊,具体案例推荐看ADS1232的驱动,对寄存器的封装非常巧妙。看懂后,拿STM32的GPIO重新封装测试下,个 ...

不高兴用的意思是???.....
回复 支持 反对

使用道具 举报

发表于 2016-8-16 13:50:51 | 显示全部楼层
ㄗs-.蝸牛· 发表于 2016-8-15 14:20
不高兴用的意思是???.....

就是太烦                     
回复 支持 反对

使用道具 举报

发表于 2016-8-17 22:36:53 | 显示全部楼层
flyleaf 发表于 2016-8-15 13:50
这种C语法叫位域,不过我也没有在stm32上用过

牛逼
回复 支持 反对

使用道具 举报

发表于 2016-8-18 11:24:40 | 显示全部楼层
我也没看懂在问什么
回复 支持 反对

使用道具 举报

发表于 2016-8-18 21:01:52 | 显示全部楼层
看懂是问的什么意思了,回答不了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 15:54 , Processed in 0.030643 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表