打印

有关I/O控制问题

[复制链接]
2309|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kumocw|  楼主 | 2011-9-21 08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kumocw 于 2011-9-21 10:24 编辑

我的程序里有段控制PF2、PF3端口的代码,默认电平都是高电平,打算运行代码过后一个变成低电平一个保持不变,可结果两个都变成了低电平,请问一下各位大侠这是什么回事?
下面是代码:
#define LCD_A1_PERIPH           SYSCTL_PERIPH_GPIOF
#define LCD_A1_BASE             GPIO_PORTF_BASE
#define LCD_A1_PIN              GPIO_PIN_3
#define LCD_A0_PERIPH           SYSCTL_PERIPH_GPIOF
#define LCD_A0_BASE             GPIO_PORTF_BASE
#define LCD_A0_PIN              GPIO_PIN_2

//预先置高电平
GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, 1);
GPIOPinWrite(LCD_A1_BASE, LCD_A1_PIN, 1);

HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 1;
   HWREG(LCD_A1_BASE + GPIO_O_DATA + (LCD_A1_PIN << 2)) = 0;

另请教一个问题:在S39B96上怎样计算出1us?

相关帖子

沙发
faseeng| | 2011-9-21 09:55 | 只看该作者
1# kumocw

HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN;
HWREG(LCD_A1_BASE + GPIO_O_DATA + (LCD_A1_PIN << 2)) = 0;

这样就可以了。因为你的LCD_A0_PIN实际是Pin2,写进去应该是0x04(GPIO_PIN_2)才能置你要的那一位

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
永远的不知 + 2 回答的非常正确。
板凳
永远的不知| | 2011-9-21 10:00 | 只看该作者
1# kumocw

GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, 1);
GPIOPinWrite(LCD_A1_BASE, LCD_A1_PIN, 1);
这个应该改成
GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN);
GPIOPinWrite(LCD_A1_BASE, LCD_A1_PIN, LCD_A1_PIN);

使用特权

评论回复
地板
永远的不知| | 2011-9-21 10:01 | 只看该作者
3# faseeng

3楼说的很对,赋值高电平,不是直接写1,而且把相应的位置1.
HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) =LCD_A0_PIN ;
   HWREG(LCD_A1_BASE + GPIO_O_DATA + (LCD_A1_PIN << 2)) = 0;

使用特权

评论回复
5
kfliuyan| | 2011-9-21 10:43 | 只看该作者
这个帖子必须顶起!

使用特权

评论回复
6
Lxn77| | 2011-9-21 13:29 | 只看该作者
学习了,版主人真好啊。

使用特权

评论回复
7
lilihua0721| | 2011-10-3 19:51 | 只看该作者
HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) =LCD_A0_PIN ;
HWREG(LCD_A1_BASE + GPIO_O_DATA + (LCD_A1_PIN << 2)) = 0;支持

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝