TI中文支持网
TI专业的中文技术问题搜集分享网站

位组合、位填充

能不能解释·一下,这个是么之意思。

HG:

如果是二进制位操作,组合就是不同改的比特位按照一定的规律拼成一个二进制数值。填充就是不同的位去填入新的值。

jia liu4:

回复 HG:

能不能举例说明,蛮烦了。

xyz549040622:

回复 jia liu4:

比如你有几个个按键IO,分别是PA0,Pa1,PB2,PB4,PC5,PC7  那么你读取按键IO状态的时候,如何读取呢,这时候就需要把这个几个IO重新组合为一个8位的IO了。那么如何组合呢,读取每个IO的状态,进行移位,然后进行|运算,最终组合为一个uchar型的数据。

jia liu4:

回复 xyz549040622:

GPIO_PIN_0              0x00000001

GPIO_PIN_1              0x00000002

num = GPIO_PIN_0 |GPIO_PIN_1

那么应该不需要以为感觉只需要进行或运算啊!

还有就是num应该是个32位的数据,除非我强制类型转换,才能成为8位。是这样理解吗?

xyz549040622:

回复 jia liu4:

对的。我上面的只是拿u8的数据类型做个比喻,这个在这里是u32类型的。但是当你读取某一个IO数据的时候,很有可能返回的是布尔型的数据,这时候就用到移位了。以及位组合。

jia liu4:

回复 xyz549040622:

就是还有一个问题,那就是地址,每一个模块就有一个地址,比如GPIO_PIN_0的地址是0x00000001,那么我给它赋值,改的是一个什么东西,地址值没有变吧!还有就是,像调用函数时,比如说配置时钟的函数,里面有几个参数,而那几个参数也有地址,而且还是或起来的,所以应该传过去来是个值,关键就是这里,地址到底变没有变,值是不是就是那几个或起来的得到的值。简单的说能不能像这样理解,就是我们调模块的时候,也需要配置,所以也是给值,不过单纯的就是一个值,所以即使是或起来的也还是相当于怎样配置得到对应的值,从而就是给单片机什么命令了。

赞(0)
未经允许不得转载:TI中文支持网 » 位组合、位填充
分享到: 更多 (0)