由于安信可蓝牙开发板是面向蓝牙应用的开发板,板载的外设资源相对比较少,只有2类,即:一类是RGB_LED,另一类则是2个独立的LED,其原理图见图1所示。
图1 LED电路
有了上面的原理图,就等于有了控制LED的引脚号。
不知为何,在例程中既然提供GPIO口的示例,就为啥不点亮一个LED给大家一点光亮呢?
既然没有,我们就自己去点亮吧,如果不过瘾,那就多点亮它几个!
1.点亮暖色灯
点亮暖色灯的主程序为:
int app_main(void)
{
/* Initialize the operating system */
osal_init_system();
osal_pwrmgr_device( PWRMGR_BATTERY );
hal_gpio_pin_init(0, 1);
hal_gpio_write(0, 1);
/* Start OSAL */
osal_start_system(); // No Return from here
return 0;
}
程序下载后,其执行效果如图2所示。
图2点亮暖色灯
2. 点亮冷暖双灯
以点亮暖色灯为基础,点亮冷暖双灯程序为:
int app_main(void)
{
/* Initialize the operating system */
osal_init_system();
osal_pwrmgr_device( PWRMGR_BATTERY );
hal_gpio_pin_init(0, 1);
hal_gpio_write(0, 1);
hal_gpio_pin_init(P34, 1);
hal_gpio_write(P34, 1);
/* Start OSAL */
osal_start_system(); // No Return from here
return 0;
}
程序下载后,其执行效果如图3所示。
图3点亮冷暖双灯
3. 闪烁效果
既然能点亮LED,那项目LED便也就不是什么问题了,通过延时处理就可实现LED闪烁的闪烁。LED闪烁的程序为:
int app_main(void)
{
/* Initialize the operating system */
osal_init_system();
osal_pwrmgr_device( PWRMGR_BATTERY );
hal_gpio_pin_init(P0, OEN);
hal_gpio_write(P0, 1);
hal_gpio_pin_init(P15, OEN);//R
hal_gpio_write(P15, 1);
hal_gpio_pin_init(P34, OEN);//B
hal_gpio_write(P34, 1);
while(1)
{
for(i=0;i<1000;i++)
for(j=0;j<2000;j++);
hal_gpio_write(P34, 1);
for(i=0;i<1000;i++)
for(j=0;j<2000;j++);
hal_gpio_write(P34, 0);
}
/* Start OSAL */
osal_start_system(); // No Return from here
return 0;
}
当然也可以将延时语句分离成独立的功能函数,其内容为:
void delay(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<2000;j++);
}
使用延时函数的主程序为:
int app_main(void)
{
/* Initialize the operating system */
osal_init_system();
osal_pwrmgr_device( PWRMGR_BATTERY );
hal_gpio_pin_init(P0, OEN);
hal_gpio_write(P0, 1);
hal_gpio_pin_init(P15, OEN);
hal_gpio_write(P15, 1);
hal_gpio_pin_init(P34, OEN);
hal_gpio_write(P34, 1);
while(1)
{
delay(1000);
hal_gpio_write(P34, 1);
delay(1000);
hal_gpio_write(P34, 0);
}
/* Start OSAL */
osal_start_system(); // No Return from here
return 0;
}
4. 点亮全部LED
除了冷暖LED外,还板载了一个RGB_LED,点亮全部LED的程序为:
int app_main(void)
{
/* Initialize the operating system */
osal_init_system();
osal_pwrmgr_device( PWRMGR_BATTERY );
hal_gpio_pin_init(P0, OEN);
hal_gpio_write(P0, 1);
hal_gpio_pin_init(P34, OEN);
hal_gpio_write(P34, 1);
hal_gpio_pin_init(P23, OEN);
hal_gpio_write(P23, 1);
hal_gpio_pin_init(P18, OEN);
hal_gpio_write(P18, 1);
hal_gpio_pin_init(P15, OEN);
hal_gpio_write(P15, 1);
while(1)
{
delay(1000);
hal_gpio_write(P34, 1);
delay(1000);
hal_gpio_write(P34, 0);
}
/* Start OSAL */
osal_start_system(); // No Return from here
return 0;
}
程序下载后,其执行效果如图4所示。
图4点亮全部LED
此外,通过扩展接口还可以点亮外挂的LED模块,其实现的效果如图5所示。
图5 点亮外挂LED模块