本帖最后由 jinglixixi_457498010 于 2023-6-26 19:24 编辑

在TelinkB91开发板配有LED和KEY,从而便于测试和掌握GPIO口的使用。
1. LED
对于LED,可进行GPIO口输出模式的测试。
image.png
图1  LED电路

由于B91开发板对LED所用引脚是采用短接的方式,故有利于引脚资源的充分使用。在短接方式下,其连接关系如图2所示,即所用的引脚为PB4~PB7。
image.png
图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所示,说明是可以驱动的。
    image.png
    图3  测试PB4引脚

    image.png
    图4  测试PB7引脚

    视频演示:

    2.KEY
    对于KEY,可进行GPIO口输入模式的测试。
    由于B91开发板对KEY所用引脚是采用短接的方式,故有利于引脚资源的充分使用。在短接方式下,其连接关系如图6所示,即所用的引脚为PC0~PC3。
    image.png
    图5  KEY电路

    image.png
    图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屏的驱动测试暂时无法进行了。