AC6905A蓝牙

一、红外解码

AC6905A所有的IO口都支持红外解码功能,在这里采用PB13作为红外接收脚
该管脚需要把以下宏定义清零。否则无法触发定时器下降沿捕获。(其他IO口待验证)并在ir_key_init()函数中指明红外接收脚。
AC6905A蓝牙_第1张图片
AC6905A蓝牙_第2张图片
在这里插入图片描述SDMMC0_EN SD0使能
SDMMC1_EN SD1使能
USB_DISK_EN U盘使能
USB_PC_EN 电脑声卡使能

二、双绑定IO口

双绑定端口要设置为高阻态,使两个端口不会互相干扰。
AC6905A蓝牙_第3张图片

`    //----------双绑端口设置为高阻态---------------
JL_PORTA->DIR|=BIT(3)|BIT(4);
JL_PORTA->PU&=~(BIT(3)|BIT(4));
JL_PORTA->PD&=~(BIT(3)|BIT(4));
JL_PORTA->DIE|=BIT(3)|BIT(4);

JL_PORTC->DIR|=BIT(3);
JL_PORTC->PU&=~BIT(3);
JL_PORTC->PD&=~BIT(3);
JL_PORTC->DIE|=BIT(3);`

三 、串口重映射

使用USBDP和USBDM作为调试打印输出口,需要进行如下设置,并且把usb_2_io()函数注释掉,否则已经作为串口了又把它作为普通IO口,那就冲突了。

  • 1、使用固定IO口作为串口
    AC6905A蓝牙_第4张图片
    AC6905A蓝牙_第5张图片AC6905A蓝牙_第6张图片AC6905A蓝牙_第7张图片
  • 2使用任意IO口作为串口
    AC6905A蓝牙_第8张图片
    在官方SDK下添加如下代码
    AC6905A蓝牙_第9张图片

四、GPIO口输入输出设置

    JL_PORTB->DIR&=~(BIT(9)|BIT(10)|BIT(12));  //设置为输出
    JL_PORTB->PU&=~(BIT(9)|BIT(10)|BIT(12));   //关闭上拉
    JL_PORTB->PD&=~(BIT(9)|BIT(10)|BIT(12));   //关闭下拉
    JL_PORTB->OUT|=BIT(10);                    //输出高电平
    JL_PORTB->OUT&=~(BIT(9)|BIT(12));          //输出低电平

五、蓝牙协议栈消息处理

MSG_BT_PP 音乐播放暂停
MSG_BT_NEXT_FILE 下一曲
MSG_BT_PREV_FILE 上一曲
MSG_BT_ANSWER_CALL 接听电话
MSG_BT_CALL_LAST_NO 电话回拨
MSG_BT_CALL_REJECT 电话拒接

bt_key_deal.c-----调用os_taskq_post发送消息给MAINTASK,MAINTASK收到消息后进入低功耗,关闭所有IO口。

AC6905A蓝牙_第10张图片在这里插入图片描述

六、添加提示音

1.把音乐文件放到tone_resource文件夹中。
2.打开download.bat添加音乐文件名。
3.打开工程,在play_sel.h头文件中添加相应的宏定义,格式参考杰理已经定义的提示音。
4.在void user_ctrl_prompt_tone_play(u8 status,void ptr)函数中添加case 分支。
5.在文件中调用user_ctrl_prompt_tone_play(u8,void
)函数播放提示音。
AC6905A蓝牙_第11张图片AC6905A蓝牙_第12张图片AC6905A蓝牙_第13张图片11111111在这里插入图片描述
AC6905A蓝牙_第14张图片AC6905A蓝牙_第15张图片

七、进入SLEEPMODE并设置唤醒口

在这里插入图片描述在这里插入图片描述这里登记的时候发现2次调用enter_sleep_mode_set()函数登记WAKEUP_8和WAKEUP13都可以唤醒AC6905A,实际调试发现无效,总是一个唤醒口有效,另一个唤醒口无法唤醒。这里我们要这样实现双唤醒口。

AC6905A蓝牙_第16张图片AC6905A蓝牙_第17张图片AC6905A蓝牙_第18张图片AC6905A蓝牙_第19张图片

八、程序框架

AC6905A蓝牙_第20张图片

你可能感兴趣的:(蓝牙)