在TelinkB91开发板配有LED和KEY,从而便于测试和掌握GPIO口的使用。
1. LED
对于LED,可进行GPIO口输出模式的测试。
图1 LED电路
由于B91开发板对LED所用引脚是采用短接的方式,故有利于引脚资源的充分使用。在短接方式下,其连接关系如图2所示,即所用的引脚为PB4~PB7。
图2 LED连接关系
为便于使用,对LED所做的定义如下:
#define LED1 GPIO_PB4
#define LED2 GPIO_PB5
#define LED3 GPIO_PB6
#define LED4 GPIO_PB7
在文件app.c中,若main_loop()函数为如下内容,则可实现LED灯的闪烁效果。
void main_loop (void){ gpio_toggle(LED1); gpio_toggle(LED2); gpio_toggle(LED3); gpio_toggle(LED4); delay_ms(500); }
复制代码那么用B91开发板上的GPIO口能否驱动外部的设备呢?
为此,将一个LED模块连接到引脚PB4及PB7,其测试结果如图3和图4所示,说明是可以驱动的。
图3 测试PB4引脚
图4 测试PB7引脚
视频演示:
2.KEY
对于KEY,可进行GPIO口输入模式的测试。
由于B91开发板对KEY所用引脚是采用短接的方式,故有利于引脚资源的充分使用。在短接方式下,其连接关系如图6所示,即所用的引脚为PC0~PC3。
图5 KEY电路
图6 KEY连接关系
由KEY电路可知,它采用的是一种矩阵电路的方式,即由Key3和Key4所连接的引脚轮流输出低电平信号,并通过Key1和Key2引脚来判别按键所处的状态,在Key3=0时,若Key1=0,则SW2被按下;若Key2=0,则SW4被按下。在Key4=0时,若Key1=0,则SW3被按下;若Key2=0,则SW5被按下。
为便于使用,对KEY所做的定义如下:
#define KEY1 GPIO_PC2
#define KEY2 GPIO_PC0
#define KEY3 GPIO_PC3
#define KEY4 GPIO_PC1
为此,对KEY所用引脚需进行如下的配置:
gpio_function_en(KEY3);
gpio_output_en(KEY3);
gpio_set_low_level(KEY3);
gpio_function_en(KEY4);
gpio_output_en(KEY4);
gpio_set_ high _level(KEY4);
gpio_function_en(KEY1);
gpio_output_dis(KEY1);
gpio_input_en(KEY1);
gpio_set_up_down_res(KEY1,GPIO_PIN_PULLUP_10K);
gpio_function_en(KEY2);
gpio_output_dis(KEY1);
gpio_input_en(KEY1);
gpio_set_up_down_res(KEY1,GPIO_PIN_PULLUP_10K);
以SW2和SW4分别控制LED1和LED3为例,其程序如下:
if(gpio_get_level(KEY1)==0)
{
gpio_set_high_level(LED1);
}
else
{
gpio_set_low_level(LED1);
}
if(gpio_get_level(KEY2)==0)
{
gpio_set_high_level(LED3);
}
else
{
gpio_set_ low _level(LED3);
}
稍感遗憾的是,B91开发板与烧录器在连接方式上,实在让人感觉不是一个一体化的设计,居然没有一个专用的烧录器连接接口。
此外,在烧录的稳定性上也令人感觉脆弱,只成功烧录了一次程序,就无法进行再次下载了,也就导致OLED屏的驱动测试暂时无法进行了。