中科蓝汛-------DUT模式详解

step 1:

在config.h中,定义宏

#define DUT_MODE               0X7D7

 

step2:

六击功能实现

typedef struct {
    u8  counter;
    u8  strikes;
    u16 val;
} key_six_t;
key_six_t key_six_cb;


AT(.com_text.bsp.key)
u16 key_six_press_process(u16 key_val)
{
    key_six_t *s = &key_six_cb;

    if (s->counter) {
        s->counter--;
    }
    if (!s->counter) {
        s->strikes = 0;
        s->val = NO_KEY;
    }

    if (check_key_return(key_val)) {
        s->strikes++;
        if ((key_val == s->val) && (s->strikes == 6)) {
            //检测到6击按键
            printf("666666666666666666666666666666666\n");
            //msg_enqueue(DUT_MODE | (key_val & 0xff));
			msg_enqueue(DUT_MODE);
        } else {
            if (key_val != s->val) {
                s->strikes = 1;
                s->val = key_val;
            }
            s->counter = 120;               //按键松开超时600ms
        }
    }
    return key_val;
}

,并在bsp_key_process函数中,调用

step 3 :

在bsp_sys.h中, sys_cb_t结构体中,新建成员变量

	u8  User_cbt_test_en;  //测试模式

在config.h中,新建宏 #define USER_ENTER_CBT_EN_DATA 0xa8

#define USER_ENTER_CBT_EN_DATA    0xa8

在func_bt中,func_bt_enter函数中,添加如下代码

#if !BT_BACKSTAGE_EN
    //bsp_bt_init();
	if(USER_ENTER_CBT_EN_DATA==sys_cb.User_cbt_test_en)
			{
				printf(" CBT test  mode OK...	%x\n",sys_cb.User_cbt_test_en);//
				bt_cfg.cbt_test_mode = 1;
			//	bt_cfg.fcc_test_mode = 1;
				printf(" f_bt.disp_status =    %x\n",f_bt.disp_status);
				led_set_sta(0xff,0,4, 0xff);
			//	sys_cb.User_cbt_test_en = 0;
			}
			else
			{
				printf(" sys_cb.User_cbt_test_en != 0xa8   %x\n",sys_cb.User_cbt_test_en);
				bt_cfg.cbt_test_mode = 0;
			//	bt_cfg.fcc_test_mode = 0;
				sys_cb.User_cbt_test_en= 0;
			}

    dis_auto_pwroff();

step 4:

在msg_bt.c中 新增case

	case DUT_MODE:
		   printf("DUT_MODE\n");
		   sys_cb.User_cbt_test_en = USER_ENTER_CBT_EN_DATA;//	0xa8  则重启 BT mode  进入 测试模式
	//	   sys_cb.Test_mode_kth_cnt = 0;
		   bt_nor_delete_link_info();
		   func_cb.sta = FUNC_NULL;
		   break;

此时运行6击进入DUT,发现在此处设置led_set_sta(0xff,0,4, 0xff);后,按键无效

经发现,需要在#if !BT_BACKSTAGE_EN 新增一句bsp_bt_init();

调试后,红灯常亮在此处设置无效,6击之后直接进入勒配对模式,并没有运行led_set_sta(0xff,0,4, 0xff);

解决办法:

在func_bt.c 中,在func_bt_disp_status函数中,判断当前状态是否是test mode

if(1==bt_cfg.cbt_test_mode)
		{
	       rled_on();  //红灯常亮
		   //led_on();
		   led_off();//蓝灯灭
		   return;
		}

 

### 中科USB Audio技术文档概述 中科在其多种芯片中集成了USB音频功能,这些芯片广泛应用于无线耳机、音箱和其他音频设备。对于开发人员而言,掌握USB音频的技术细节至关重要。 #### USB Audio协议支持 中科讯的多款芯片均支持USB Audio Class 2.0 (UAC2),这使得设备能够传输高质量无损音质的数据流[^1]。通过遵循此标准,可以确保兼容各种操作系统平台上的驱动程序自动识别并正常工作。 #### 音频处理能力 在具体实现上,像AB5301A这样的高性能SoC不仅具备强大的RF收发器用于牙连接,还内置了高效的DSP来完成复杂的编解码任务以及均衡调节等功能[^3]。这意味着即使是在资源受限的情况下也能提供出色的听觉体验。 #### 开发环境搭建 为了方便开发者快速入门,官方提供了详细的SDK包——例如`sdk_bt892xa2_v01x_s4041_20220316`版本就包含了针对不同应用场景下的示例工程文件和API接口说明文档[^2]。借助于这些工具链的支持,工程师们可以在较短时间内构建起稳定可靠的固件框架。 #### GPIO配置实例 当涉及到硬件层面的操作时,则需参照具体的GPIO初始化流程来进行设置。比如要启用某个特定引脚作为调试用途的话: ```c // 假设我们正在配置PB4为输出模式,并将其置位高电平 GPIOBDE |= BIT(4); // 数字IO使能: 设置为数字IO GPIOBDIR &= ~BIT(4); // 控制IO方向: 输出模式 GPIOBFEN &= ~BIT(4); // 当作通用GPIO使用 GPIOBSET |= BIT(4); // 将PB4引脚设置输出高 ``` 以上代码片段展示了如何正确地设定一个GPIO端口的状态以便后续调用[^4]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值