《正点原子BEE BLOCK模块资料》ATK-MB003模块使用说明

ATK-MB003模块使用说明


        1,硬件连接

       这里以正点原子M48Z-M3最小系统板STM32F103版为例,给大家介绍一下模块和板卡的连接方法。其它板卡与模块的硬件连接方法,请大家在“ATK-MB003有源蜂鸣器模块\3,程序源码\相应板卡例程文件夹\readme.txt”路径下查看。

       有源蜂鸣器模块可通过杜邦线与正点原子M48Z-M3最小系统板STM32F103版进行连接,具体的连接关系,如下表所示:


表1.1.1有源蜂鸣器模块与M48Z-M3最小系统板STM32F103版连接关系 


        2,实验功能


       2.1 有源蜂鸣器模块测试实验


       2.1.1 功能说明

       在本实验中,串口会打印提示信息。需要查看这部分实验信息的用户,可用杜邦线将最小系统板STM32F103的PA9引脚和GND连接至外部的USB转串口设备,这样就可以通过XCOM上位机查看串口打印的信息了。

       本实验通过开发板上的两个独立按键控制有源蜂鸣器。按键 KEY_UP 控制蜂鸣器关闭,按键 KEY0 控制蜂鸣器打开

       开发板的LED0闪烁,提示程序运行。


       2.1.2 源码解读

       打开本实验的工程文件夹,能够在./Drivers/BSP目录下看到ATK_BUZZER文件夹,其中ATK_BUZZER文件夹中就包含了有源蜂鸣器模块的驱动文件,如下图所示:


图2.1.2.1有源蜂鸣器模块驱动代码


       2.1.2.1 有源蜂鸣器模块驱动

       下面将简要介绍atk_buzzer.c中几个重要的API 函数。


       1. 函数atk_buzzer_init ()

       该函数用于初始化有源蜂鸣器模块,具体的代码,如下所示:

/**
 * @brief       蜂鸣器模块初始化函数
 * @param       无
 * @retval      无
 */
void atk_buzzer_init(void)
{
    GPIO_InitTypeDef gpio_init_struct;
    ATK_BUZZER_GPIO_CLK_ENABLE();                        /* 时钟使能 */
 
    gpio_init_struct.Pin = ATK_BUZZER_GPIO_PIN;        /* ATK_BUZZER引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;       /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLDOWN;               /* 下拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;   /* 高速 */
    HAL_GPIO_Init(ATK_BUZZER_GPIO_PORT, &gpio_init_struct);     
    ATK_BUZZER(0);                                         /* 关闭 蜂鸣器 */
}

       从上述代码可以看出,atk_buzzer_init() 函数的作用是初始化有源蜂鸣器模块的 BZZ 引脚。具体来说,它启用了蜂鸣器引脚的时钟,并将引脚配置为推挽输出模式,且设置为下拉状态,输出频率为高速模式。最后,通过调用 ATK_BUZZER(0) 函数,将 BZZ 引脚设置为低电平,确保蜂鸣器在初始化时处于关闭状态(不发声)


       2.1.2.2 实验测试代码

       实验的测试代码为文件 demo.c,在工程目录下的 User 子目录中。测试代码的入口函数为 demo_run(),具体的代码,如下所示:

/**
 * @brief       例程演示入口函数
 * @param       无
 * @retval      无
 */
void demo_run(void)
{
    uint8_t key = 0, t = 0;
    
    key_init();                              /* 初始化按键 */
    atk_buzzer_init();                   /* 初始化蜂鸣器 */
    
    while (1)
    {
        key = key_scan(0);
        if(key == KEY0_PRES)
        {
            ATK_BUZZER(1);                 /* 打开蜂鸣器 */
            printf("打开蜂鸣器\r\n");
        }
        else if(key == WKUP_PRES)
        {
            ATK_BUZZER(0);                /* 关闭蜂鸣器 */
            printf("关闭蜂鸣器\r\n");
        }
        delay_ms(10);
        if((t++ % 50) == 0)
        {
            LED0_TOGGLE();
        }
    }
}

       从上述代码可以看出,整个测试代码的逻辑较为简单。首先,初始化按键和蜂鸣器模块。随后,在 while 循环中,通过检测按键状态来控制蜂鸣器的开关。当 KEY0 被按下时,蜂鸣器被打开;当 WKUP 键被按下时,蜂鸣器关闭,并通过串口打印提示信息。最后,LED0的闪烁表示程序正常运行。


       2.1.3 实验现象

       将有源蜂鸣器模块按照第一节“硬件连接”中介绍的连接方式与开发板连接,并将实验代码编译烧录至开发板中,本实验使用串口输出调试信息,因此需将开发板的 PA9连接至 DAP 虚拟串口(或 USB 转 TTL 模块)的 RX引脚。完成连接后,可通过串口调试助手查看实验信息输出,如下图所示:


图2.1.3.2 串口调试助手显示内容


       按键控制逻辑部分:

       当按下 KEY0 按键时,蜂鸣器将响起,并通过串口输出“打开蜂鸣器”提示。

       当按下 WKUP 按键时,蜂鸣器关闭,串口输出“关闭蜂鸣器”提示。


请使用浏览器的分享功能分享到微信等