天嵌 ARM开发社区

 找回密码
 注册
查看: 2206|回复: 1

LED 实验 全亮全灭 有点疑问

[复制链接]
非洲老人 发表于 2009-12-27 09:10:50 | 显示全部楼层 |阅读模式
有个疑问  在 \TQ2440_Test\src\2440lib.c    BOARD LED  里面
  rGPBDAT = (rGPBDAT & ~(0xf<<5)) | ((~data & 0xf)<<5);   有什么用 ?
刚开始    LED2 和LED3 总是亮 后我把这句屏蔽了才可以控制LED全亮全灭

还有 寄存器赋值 为什么要写成  rGPBCON = rGPBCON & ~0x3d57fc|0x3d57fc;  
在实验中 我写成    //    rGPBDAT = 0xfffffe1e ;          //    全亮
       
                     rGPBDAT = 0xfffffffe ;      //    全灭   
  没有什么影响啊 ?  上面那样写有什么好处吗?


下面是我做的  可以全亮全灭  ( GPB0  是蜂鸣器 我把它赋0了)

本帖子中包含更多资源

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

x
denny_you 发表于 2009-12-28 00:30:28 | 显示全部楼层
其实呢,rGPBDAT = (rGPBDAT & ~(0xf<<5)) | ((~data & 0xf)<<5);   这句话你改成
rGPBDAT = (~data & 0xf)<<5; 同样可以实现。前面那一段自己去理解吧,注意input和output。

LED1~4连接着GPB5~8,所以data需要左移5位,而data要取反是因为低电平才点亮LED。
假如data = 0x01,那就是 LED1 亮
假如data = 0x0f,那就是 LED1~4 全 亮

还有你说到源程序那样写有什么好处,好处就是方便维护和修改程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-2 10:07 , Processed in 1.062493 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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