可能是有段时间没有接触新唐的新品之故吧,在例程中居然没有找到以往常见的闪灯程序,它可是打开GPIO口使用之门的呀! 没办法只能自行编一个看了,为了能快速入手,可在例程Template的基础上来进行。 由于要用到GPIO口,故要在Library目录下添加文件gpio.c。 此外,从开发板的原理图可知,LEDR1的引脚连接为PB14,且一端接到VDD,见图1所示。 图1 LED电路 为此,要点亮LEDR1只需令其输出低电平接口,相应的程序如下: int main(void) { SYS_Init(); GPIO_SetMode(PB,BIT14, GPIO_MODE_OUTPUT); PB14= 0; while(1); } 经编译下载,其运行效果如图2所示。 图2 运行效果 要实现闪灯效果,延时函数是必不可少的,但寻遍各处也没找到类似Delay ms()或Delayus()之类的函数,无奈只好先将其放下,再测试一下按键的用法。 板载按键的电路如图3所示,其连接的引脚为PH4,由此可知当按键按下时,它将输出低电平,否则一直处于高电平状态。 图3 按键电路 实现按键测试的思路是当按键按下时点亮LED,否则将熄灭LED,其程序如下: int main(void)
{
SYS_Init();
GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
PB14 = 1;
while(1)
{
if(PH4==0) PB14 = 0;
else
{
PB14 = 1;
}
}
}
经程序编译下载,证明该用法正确。 要编写闪灯程序,该如何获取延时函数呢? 我们可以使用计时器来获得,当然这要在Library目录下再添加一个文件timer.c,所用的函数则为TIMER_Delay()。 相应的闪灯程序为: int main(void)
{
SYS_Init();
GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
PB14 = 1;
while(1)
{
PB14 = 0;
TIMER_Delay(TIMER0, 1000000);
PB14 = 1;
TIMER_Delay(TIMER0, 1000000);
}
}
至此,我们就完全地回到了以往的开发起点。 有了前面的基础,下面再来测试一下Arduino接口的用法。 1.蜂鸣器的测试 蜂鸣器有2种,一种是有源蜂鸣器,另一种是无源蜂鸣器,其中有源蜂鸣器加电即可发出声响;而无源蜂鸣器相应外加脉冲信号来工作。 测试中,蜂鸣器所连接的引脚为PA2,见图4和图5所示。 图4 有源蜂鸣器连接 有源蜂鸣器的测试程序为: int main(void)
{
SYS_Init();
GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
GPIO_SetMode(PA, BIT2, GPIO_MODE_OUTPUT);
GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
PB14 = 1;
while(1)
{
if(PH4==0)
{
PB14 = 0;
PA2= 0;
}
else
{
PB14 = 1;
PA2= 1;
}
}
}
图5 有源蜂鸣器连接 无源蜂鸣器的测试程序为: int main(void)
{
SYS_Init();
GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
GPIO_SetMode(PA, BIT2, GPIO_MODE_OUTPUT);
GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
PB14 = 1;
while(1)
{
PB14 = 0;
PA2= 0;
TIMER_Delay(TIMER0, 500000);
PB14 = 1;
TIMER_Delay(TIMER0, 500000);
PA2= 1;
}
}
经编译下载,证明此使用方法正确。 2.风扇模块的测试 风扇模块是一种自带驱动的模块,该模块所连接的引脚为PA2,见图6所示。 图6 风扇模块电路连接 风扇模块的测试程序与蜂鸣器的测试程序相同,这里从略。 经编译下载,证明此使用方法正确。 因此可知,在改变延时超短的情况下,可达到调节风扇转速的作用。 |