大家好,我现在利用CSR BlueLab(3.42)的stereo_headset 源程序和BC03(1307板)做试验,我把AIO口转换成 PIO口,然后利用它来实现对LED的状态控制.在这里,我将AIO1 ,AIO3 转成 PIO13和PIO15,然后利用它们分别蓝灯和红灯进行控制.
#define LED_RED (1<<15)
#define LED_BLUE (1<<13)
#define PIO_AIO1 (1<<13)
#define PIO_AIO3 (1<<15)
use PSTOOL:
AMUX_AIO1:select AIO1 as a PIO
AMUX_AIO3:select AIO3 as a PIO
我们知道,在headset_led.c中,它有一个回调函数LED callback function for BLUE LED(and RED LED),定义了BOOL型变量
bool blue_on;
if ((PioGet() & (unsigned)LED_BLUE) == (unsigned)LED_BLUE)
blue_on=1;
else
blue_on=0;
但是PioGet()只能返回PIO0到PIO11的数据,PIO12以后的读不到,所以我自己定义了两个全局变量bool blue_on=FALSE 和bool red_on=FALSE来代替原来的bool blue_on,bool red_on.
if PioSet(LED_BLUE, ~LED_BLUE);/*蓝灯对应PIO口置低电平*/
blue_on=FALSE;/*蓝灯灭*/
else
blue_on=TRUE;
对于红灯也一样.
这样应该没什么问题,但是编译运行后,蓝灯开机后甚至是在进入匹配时都常亮, 而红灯一直不亮.
这是怎么回事啊,希望大家帮分析一下,非常感谢!
[em03]
[此贴子已经被作者于2006-12-7 8:59:45编辑过] |