天嵌 ARM开发社区

 找回密码
 注册
查看: 5992|回复: 10

请教大家一个基础的语句rGPBCON &= ~3

[复制链接]
huajiji 发表于 2010-3-19 22:32:07 | 显示全部楼层 |阅读模式
本帖最后由 huajiji 于 2010-3-19 22:38 编辑

请教大家一个问题:裸奔第四章第二节void Buzzer_Freq_Set( U32 freq )里函数第一个语句
rGPBCON &= ~3; //set GPB0 as tout0, PWM output
这一句的运算过程是怎样的呢?怎么会得到GPB0里的值为10,即set GPB0 as tout0呢?
我基础不大好,麻烦高手看一下我对这个语句的理解错误在哪里。
这里rGPBCON 寄存器是22位的,~3的二进制数也就为11 1111 1111 1111 1111 1100吧。
rGPBCON的Reste Value 在手册里写的是0x0,再和~3相与,它还是0x0啊。那又怎么能够得到GPB0里的值为10呢???
麻烦高手们给我解答一下,好吗?
sfh2081 发表于 2010-3-20 20:50:20 | 显示全部楼层
你有没有注意到,rGPBCON &= ~3;  下面的一行代码:rGPBCON |= 2;
首先,rGPBCON &= ~3 把  寄存器GPBCON中的GPB0[1..0]清0, 然后使用rGPBCON |= 2; 使GPB0[1..0]为10.

这是一种常用的方法,经常会用到,多积累
回复

使用道具 举报

sfh2081 发表于 2010-3-20 20:54:07 | 显示全部楼层
这两句还可以合成一条语句:

rGPBCON = (rGPBCON &(~0x03)) | 0x02 ;
回复

使用道具 举报

珊菲萍 发表于 2010-3-24 08:24:14 | 显示全部楼层
好很好,非常好,一句顶一万句.
回复

使用道具 举报

 楼主| huajiji 发表于 2010-3-25 09:29:03 | 显示全部楼层
2# sfh2081
哈哈太好了,终于有个人来给我讲清楚了。真是万分感激啊!!!
回复

使用道具 举报

bitwei 发表于 2010-5-24 15:38:49 | 显示全部楼层
tout0是什么意思啊?
回复

使用道具 举报

 楼主| huajiji 发表于 2010-5-28 15:24:38 | 显示全部楼层
6# bitwei

2440总共有4个PWM输出口,tout0~tout3.看一下下面的GPB口的定义就知道了。(来自2440英文手册)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

zhuanjiao520 发表于 2010-5-30 21:15:08 | 显示全部楼层
明白了啊!!
回复

使用道具 举报

学海无涯 发表于 2010-11-4 21:43:43 | 显示全部楼层
恍然大悟呀
回复

使用道具 举报

誌豪 发表于 2012-7-17 22:45:43 | 显示全部楼层
谢谢指点啊。我也是刚有疑惑。
回复

使用道具 举报

仙帝将王 发表于 2012-7-19 11:10:40 | 显示全部楼层
菜鸟学习了 呵呵:lol
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-8-2 05:49 , Processed in 2.039444 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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