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

BeagleBone Black 写的裸板程序,为何向指定IO写0灯不灭?(结贴,原来只是延时不够的问题)

#define GPIO1_BASE_ADDR (*((volatile unsigned long *)0x4804c000))
#define GPIO1_OE (*((volatile unsigned long *)0x4804c134))
#define GPIO1_SETDATAOUT (*((volatile unsigned long *)0x4804c194))

void delay(void);

void main()
{
GPIO1_OE=~(1<<23);
while(1)
{
GPIO1_SETDATAOUT =(1<<23);
delay();
GPIO1_SETDATAOUT =~(1<<23);
delay();
}
}

void delay(void)
{
unsigned long temp;
for(temp=0x3fff;temp>0;temp–)
;
}

GPIO1_23上的灯一直亮着。。。。

看门狗已经关闭

附件是整个工程,用的是gcc

一般延时时间不够的话灯的亮度会有不同,但是这个竟然跟正常时没什么两样。。。。。

将延时改大一些即可

jianbo qin:

将GPIO1_SETDATAOUT =~(1<<23)

改为GPIO_CLEARDATAOUT =(1<<23)也无济于事

leo chen:

回复 jianbo qin:

裸机的没玩过,需不需要pinmux?

jianbo qin:

回复 leo chen:

不用,我把StarterWare里面的相关函数注视掉功能还是正常,但是我自己写的就不正常。。。。

Denny%20Yang99373:

回复 jianbo qin:

对比一下相关寄存器吧

活着的亡灵:

我也在BBB上做了LED灯的实验,包括闪烁和流水灯都没问题,只用到了GPIO_OE, GPIO_DATAOUT寄存器,偏移值分别是134H,13CH

OE为使能输出,DATAOUT为输出的数据,你可以用这种方法试试

另外,SETDATAOUT寄存器只能将某位置1,不能清0,所以1楼的程序肯定是有问题的

J Z:

你好,其实我想问下,你是如何让BBB使用Starterware的?我试过没有成功,求详细指导。

leo chen:

回复 活着的亡灵:

好像还有个寄存器是GPIO1_CLEARDATAOUT ,可以试试效果

jianbo qin:

回复 J Z:

看一下doc下面的的文档就行了

赞(0)
未经允许不得转载:TI中文支持网 » BeagleBone Black 写的裸板程序,为何向指定IO写0灯不灭?(结贴,原来只是延时不够的问题)
分享到: 更多 (0)