低功耗蓝牙CH571,CH573,CH582,CH583配对过程中开启配对码使用教程

CH571,CH573,CH582,CH583写法一致,本篇以CH582为例介绍蓝牙配对码使用方法;

蓝牙HID设备理论上均可实现该功能,这里就以Hid键盘为例,

 

本篇以串口中断的方式为例发送密码,其它方式均可以自行尝试,

uint8_t TxBuff[] = "This is a tx exam\r\n";/*TxBuff用来测试串口中断是否正常使用*/
uint8_t RxBuff[];/*RxBuff用来接收串口发来的密码*/
uint8_t trigB;/*串口一包数据缓存几个字节*/

紧接着在main函数中配置串口中断,这边程序中我使用的串口为串口3,

 

    GPIOA_SetBits(GPIO_Pin_5);
    GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU);      // RXD-配置上拉输入
    GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
    UART3_DefInit();
    UART3_SendString(TxBuff, sizeof(TxBuff));
    UART3_ByteTrigCfg(UART_7BYTE_TRIG);
    trigB = 7;
    UART3_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
    PFIC_EnableIRQ(UART3_IRQn);

 然后写下串口中断程序,

/* 串口3中断 */
uint8_t Rcvlen; __INTERRUPT __HIGH_CODE
void UART3_IRQHandler(void) { if(UART3_GetITFlag()) { Rcvlen = UART3_RecvString(RxBuff); UART3_SendString(RxBuff, Rcvlen); } }

我们回到Hid_dev.c文件中外部声明这两个变量Rcvlen和RxBuff[ ]使用,

extern uint8_t Rcvlen;
extern uint8_t RxBuff[];

 

定义PASSKEY_EVE事件,

 给hidEmuConnHandle这个连接处理函数在head文件中声明一下,以便我们hiddev.c函数能够使用,

 接下来我们在蓝牙部分写上配对码接收功能,

①改宏定义,

 ②编写PASSKEY事件,

 

 

 

if ( events & PASSKEY_EVT )
     {
        //printf("enter passcode\n\r");
       uint32 passkey=0 ;
       if((Rcvlen==6))
       {
           printf("rcvlen:%d\n\r",Rcvlen);
         for(u8 i=0;i<6;i++)  //密码是10进制数输入,需要进制进制转换
         {
             for(u8 i=0;i<6;i++)
             {
                 printf("%x ",RxBuff[i]);
             }
             printf("\r\n");
           passkey=10*passkey;
           passkey+=(RxBuff[i]-0x30);
         }
         PRINT("passkey:%d\r\n",passkey);
         Rcvlen =0;
         GAPBondMgr_PasscodeRsp( hidEmuConnHandle, SUCCESS, passkey ); //输入密码
       }
       else {
         tmos_start_task(hidDevTaskId,PASSKEY_EVT,400);//如果没有接收到密码,重新开启任务
       }
       return ( events ^ PASSKEY_EVT );
     }

 ③应用这个Passkey事件,

④开启配对码还需要屏蔽此处代码,

⑤到这里,代码部分就修改完毕了,接下来编译程序无误,烧录进我们的CH582芯片,进PC端蓝牙配对界面,

 

 

 

 

到此配对流程结束。


 

如果按照本篇博客修改仍然未成功,这边把修改完的程序放在百度网盘中,有意者自取。

百度网盘链接:https://pan.baidu.com/s/1edQ11RBZ208HHYPb9KFPqw?pwd=ng0o
提取码:ng0o

posted @ 2023-04-11 14:28  oTvTo  阅读(2405)  评论(0编辑  收藏  举报