HC-05蓝牙模块

引脚定义

引脚多的时候的定义

//使用枚举来表示状态
typedef enum bt_status
{
    HC05_STATUS_DISCONNECT = 0,
    HC05_STATUS_CONNECT = 1,
}BT_ConnectStatus_t;



//枚举
enum HC05Pin_t
{
    HC05_TX = 0,
    HC05_RX = 1,
    HC05_EN = 2,
    HC05_STATE = 3,
    HC05_COUNT
};




typedef struct blue_tooth{ 
    UART_t             uart;
    GPIO_Port_t        port[HC05_COUNT];  //由于本次实验需要四个引脚,所以用数组;不然得四个引脚
    uint16_t           pin[HC05_COUNT];
    uint32_t           rx_buffer_current_cnt;
    uint32_t           rx_buffer_total_length;                  //缓冲区总的长度
    char               rx_buffer[HC05_RECEIVE_BUFFER_SIZE];       //接受AT指令的缓冲区
}BlueTooth_t;

也可以这样定义:

枚举类型:

enum HC05Pin_t
{

    //类似于哈希映射
    HC05_TX = 0,
    HC05_RX = 1,
    HC05_EN = 2,
    HC05_STATE = 3,
    HC05_COUNT
};

这段代码定义了一个枚举类型`HC05Pin_t`,用于清晰、安全地表示与HC05蓝牙模块相关的引脚。枚举(enumeration)是一种整型数据类型,它可以有几个预定义的命名整数常量。在本例中,`HC05Pin_t`定义了以下几种状态:

- `HC05_TX = 0`: 表示HC05蓝牙模块的传输(TX)引脚。这是一个输出引脚,HC05通过它发送数据到其他设备。

- `HC05_RX = 1`: 表示接收(RX)引脚。这是一个输入引脚,HC05通过它接收来自其他设备的数据。

- `HC05_EN = 2`: 通常表示使能(EN)或控制引脚,用于控制HC05模块的开启或关闭状态。

- `HC05_STATE = 3`: 可能是指一个状态指示引脚,用于表示HC05的工作状态(如模块是否准备好传输数据、连接状态等)。

- `HC05_COUNT`: 这个并不是一个实际的引脚,而是一个计数器,用来表示上述有效引脚的数量。在某些编程上下文中,这可用于循环遍历或数组大小确定等目的。

通过使用枚举类型,代码变得更加可读且易于维护,因为它允许开发者以有意义的名字引用这些引脚,而不是直接使用数值,从而减少了因硬编码数值而导致的错误。

蓝牙初始化

/******************************************************************************
 * @brief     初始化HC-05模块
 *
 * @param[in]  bt   :  BlueTooth_t结构体指针
 *
 * @return     0, 表示初始化成功, 其他值表示失败
 *
 ******************************************************************************/
int BT_Init(BlueTooth_t *bt)
{
    if(!bt)
        return -1;

    bt->rx_buffer_current_cnt = 0;
    bt->rx_buffer_total_length = HC05_RECEIVE_BUFFER_SIZE;
    memset(bt->rx_buffer, 0, sizeof(bt->rx_buffer));

    /* 初始化用到的硬件 */
    bt_hw_init(bt);

    /* 使用AT指令初始化HC-05模块 */
    bt_software_reset(bt);

    return 0;
}

蓝牙硬件初始化配置:

初始化引脚定义:

#define    HC05_DelayMs(t)                Delay_Ms(t)
#define    HC05_GPIO_LOW                  0
#define    HC05_GPIO_HIGH                 1


#if defined (STM32F40_41xxx)


#define    HC05_CONFIG_IO_OUTPUT(port, pin)          {GPIO_InitTypeDef GPIO_InitStructure; \
                                                    GPIO_InitStructure.GPIO_Mode     =  GPIO_Mode_OUT; \
                                                    GPIO_InitStructure.GPIO_OType    = GPIO_OType_PP;\
                                                    GPIO_InitStructure.GPIO_PuPd     = GPIO_PuPd_UP; \
                                                    GPIO_InitStructure.GPIO_Speed    =  GPIO_Speed_50MHz; \
                                                    GPIO_InitStructure.GPIO_Pin      =  pin ; \
                                                    GPIO_Init(port, &GPIO_InitStructure);}

#define    HC05_CONFIG_IO_INPUT(port, pin)           {GPIO_InitTypeDef GPIO_InitStructure; \
                                                    GPIO_InitStructure.GPIO_Mode     =  GPIO_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值