本篇介绍TS201的IO——FLAG的使用。在板子上,两块DSP分别将FLAG0连接了一个LED,在TS201上面没有像串口这样的调试端口,因此在以后的测试过程中,这个LED就充当了完成指示器了,呵呵~~
FLAG端口就是TS201的通用IO,每个DSP上有4个这样的FLAG,从FLAG0~FLAG3,使用方法都是一样的。
参考TS201硬件手册,对于FLAG的控制有如下描述:
这样编程就很明了了,通过改变寄存器的相应位,完成FLAG的控制,下面给出具体代码:
/***********************************************************
函 数 名:Init_LEDs()
功 能:初始化FLAG0作为LED的输出端口
说 明: 入口参数:
返 回 值:无
设 计: 日 期:2012-04-04 修 改: 日 期:
************************************************************/
void Init_LEDs(void)
{
__builtin_sysreg_write(__FLAGREGST, FLAGREG_FLAG0_EN); // enable FLAG0 as outputs
}
/***********************************************************
函 数 名:ClearSet_LED()
功 能:对LED管脚进行置1、清零、取反操作
说 明: 入口参数:bState =0 : 置位 =1 : 清零 其他 : 取反
返 回 值:无
设 计: 日 期:2012-04-05 修 改: 日 期:
************************************************************/
void ClearSet_LED(const int bState)
{
volatile int temp;
if( 0 == bState ) //清零
__builtin_sysreg_write(__FLAGREGCL, ~FLAGREG_FLAG0_OUT);
else if( 1 == bState ) //置位
__builtin_sysreg_write(__FLAGREGST, FLAGREG_FLAG0_OUT);
else //取反
{
temp = __builtin_sysreg_read(__FLAGREG);
temp = temp ^ FLAGREG_FLAG0_OUT;
__builtin_sysreg_write(__FLAGREG, temp);
}
}
首先初始化LED的端口,然后通过适当的延时,完成LED的闪烁。
EnjoyYourself!