在实际项目中,经烧录软件,发现耳机不能响应任何声音

经客户描述,为了省电处理,客户要求在PE7处,拉高电平(量的电压3.3V)时,喇叭才能激活,有声音。

在播放音乐时能有声音,在有提示音时需要拉高电平,在通话去电,来电时,需要拉高电平。

如何定义PE7

在config.h中,新增如下代码

//USER  DEFINE
#define APM_PE7_INIT()    GPIOEDE |= BIT(7); GPIOEPU  |= BIT(7); GPIOEDIR &= ~BIT(7) // PA7 init ,
#define APM_PE7_SET_H()   GPIOESET = BIT(7)  //设置高电平
#define APM_PE7_SET_L()   GPIOECLR = BIT(7)   //设置低电平
#define APM_PE7_STA()            (GPIOE & BIT(7)) //当前电平的值

拓展:

IO口有各个段, 当使用PA7 PB7 PE7等等,我们可以根据相应的地方来修改,将对应的IO口和A 、B、E段改成相应的。

#APM_PA5_INIT()     GPIOADE |= BIT(5); GPIOAPU  |= BIT(5); GPIOADIR &= ~BIT(5) // PA5init ,

设置好IO口后,我们需要调用,在相应的位置进行初始化

在Func.c函数中,进行初始化

AT(.text.func)
void func_run(void)
{//func_cb.sta = FUNC_SPEAKER; //FUNC_EXSPIFLASH_MUSIC;printf("%s\n", __func__);APM_PE7_INIT();  // PE7 初始化//此处省略下面代码}

首先,我们需要在响应提示音的时候,PE7拉高电平

修改 提示音响应函数中,修改。

mp3_res_play()函数中,首行拉高 APM_PE7_SET_H()

,这样的话,在每次响应提示音之前,都拉高PE7。

注意:在修改如上方法后,发现没有POWER ON 开机提示音未响应。 经分析,初始化在此处晚了,没有读取到,需要在开机时重新进行PE7初始化,并拉高PE7

#if WARNING_POWER_ONAPM_PE7_INIT();//PE7 初始化APM_PE7_SET_H();//PE7设置高电平mp3_res_play(RES_BUF_POWERON_MP3, RES_LEN_POWERON_MP3);
#endif // WARNING_POWER_ON

,此时提示音都已经有了,但是在播放音乐和通话时,并没有声音。

根据蓝牙状态的宏定义发现,大于已连接状态的话,都必须要拉高电平

BT_STA_CONNECTED, //已连接

BT_STA_PLAYING, //播放

BT_STA_INCOMING, //来电响铃

BT_STA_OUTGOING, //正在呼出

BT_STA_INCALL, //通话中

,并定义一个计数标志,sys_cb.PE7_io_turn_cnt,方便设置电平,以及打印,此处只能播放音乐时的消息

case MSG_SYS_1S:bt_send_msg(BT_MSG_HFP_REPORT_BAT);if(bt_get_status() > BT_STA_CONNECTED){if(sys_cb.PE7_io_turn_cnt >= 10 ){sys_cb.PE7_io_turn_cnt = 10;}APM_PE7_SET_H();printf("PE7 === %d \n",APM_PE7_STA());}else{sys_cb.PE7_io_turn_cnt ++;if(sys_cb.PE7_io_turn_cnt)printf("---------------%d-------------------------",sys_cb.PE7_io_turn_cnt);APM_PE7_SET_L();printf("PE7 === %d \n",APM_PE7_STA());}break;

当通话时,则不会执行func_bt_message()中 的 MSG_SYS_1S,

所以我们需要在通话消息管理函数中sfunc_bt_call_message() 也定义一个MSG_SYS_1S

case MSG_SYS_1S:bt_send_msg(BT_MSG_HFP_REPORT_BAT);call_status = bt_get_call_indicate();//获取当前通话状态if(call_status >= BT_CALL_INCOMING)//如果大于等于来电状态{if(sys_cb.PE7_io_turn_cnt >= 10 ){sys_cb.PE7_io_turn_cnt = 10;}APM_PE7_SET_H();printf("PE7 === %d \n",APM_PE7_STA());}else{sys_cb.PE7_io_turn_cnt ++;if(sys_cb.PE7_io_turn_cnt)printf("---------------%d-------------------------",sys_cb.PE7_io_turn_cnt);APM_PE7_SET_L();printf("PE7 === %d \n",APM_PE7_STA());}break;

关于高电平与低电平的使用相关推荐

  1. stm32中空的I/O管脚是高电平还是低电平

    STM32中空的I/O管脚是高电平还是低电平取决于具体情况. 1.IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定. 2.STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高阻. ...

  2. 西门子博途_S7-1200通过脉冲方式控制步进电机时,限位开关的高电平、低电平如何选择?

    西门子博途_S7-1200通过脉冲方式控制步进电机时,限位开关的高电平.低电平如何选择? 位置限制中的限位开关: 高电平:即该开关没感应到时一直为OFF(0),感应到时为ON(1) 低电平:即该开关没 ...

  3. 判断STM32 GPIO输入口的输入状态(高电平或低电平)

    判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE->IDR& GPIO_IDR_IDR2) { 函数体 ...

  4. ttl接地是高电平还是低电平_(音源很重要)18新汉兰达音响改装升级原车主机改低电平RCA输出...

    18款新汉兰达,原车主机高电平输出(失真最高达10%以上)直推喇叭,前四后二!高转低的效果有目共睹,现在已经是极少车友选择使用!高电平进DSP是目前比较多车友选择的,可能是无奈之举,其实它还是充当高转 ...

  5. ttl接地是高电平还是低电平_功放技术参数1——高电平

    在汽车音响中的功放或者DSP再或者是DSP功放中我们都会遇到高电平信号或者低电平信号输入,我们该如何判断主机输出的到底是高电平信号还是低电平信号呢? 我们可以用一个很简单的方法来鉴定,那就是主机输出能 ...

  6. 高,低电平复位电路原理及加电容的作用

    什么是复位 为什么要加复位? 高电平上电复位 低电平上电复位 高电平按键复位 低电平按键复位 什么是复位 单片机复位电路的作用是:使单片机恢复到起始状态,让单片机的程序从头开始执行,运行时钟处于稳定状 ...

  7. 计算机1为什么代表高电平,高电平为什么表示1,低电平为什么表示0?

    高电平为什么表示1,低电平为什么表示0?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 高电平为什么表示1,低电平为什么 ...

  8. 高电平低电平是什么意思

    原文地址::http://blog.sina.com.cn/s/blog_5f39a4380100dh64.html 高电平低电平是什么意思 要了解逻辑电平的内容,首先要知道以下几个概念的含义: 1: ...

  9. 电路方案分析(十一)低电平(5uA)V-I转化器

    低电平(5uA)V-I转化器 tips:TI设计方案参考分析:TI Designs:ZHCUO65 1.设计需求 2.工作原理 3.器件选择 4.仿真 5.PCB设计 6.测量验证结果 7.不同的配置 ...

最新文章

  1. Tomcat 源码阅读记录(1)
  2. C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码
  3. coker php debug_docker中php xdebug调试开发
  4. phpcms关于 {if} 判断后台是否上传{thumb} 缩略图 - 代码篇
  5. java 读取文件第一行代码,java文件读取。(单字节读取和按行读取读取)
  6. css元素居中实现方法
  7. vega56刷64_Vega56刷入BIOS跑分直逼旗舰Vega64
  8. 华硕v4000fj笔记本怎么样_所有已开箱笔记本的目录汇总 20200812
  9. 技术人 | 我在支付宝体验技术部这四年学到了什么?
  10. 显式积分,隐式积分和弹簧质点系统(详细公式推导和太极源码)
  11. Linux 搭建mysql读写分离
  12. 网页中直接跳转相应页面方法
  13. 自动驾驶什么时候才会凉凉,估计还要多久?
  14. 数据库:MySQL Workbench如何连接远程数据库
  15. 服务器装win10性能怎样,普通Win10越升越卡?Win10专业工作站版了解下
  16. Linux -- snmp v3开通、认证、加密及其他
  17. php泛目录站群系统,php泛目录站群
  18. 数学建模课程设计-住房的合理定价问题
  19. 阅读《JavaScript设计模式》第二章心得
  20. 重学计算机(六、程序是怎么运行的)

热门文章

  1. SPSS多元线性回归
  2. php技术面试成功后试岗,6.3公里“阅读静安”光音栈桥“会唱歌”
  3. 即期信用证和远期信用证
  4. ar虚拟现实电子沙盘软件制作
  5. OpenGL学习三十九:飘动的旗帜
  6. 软件测试需要掌握的技能
  7. Docker - 编译安装nginx镜像
  8. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7
  9. Android 音乐APP(一)扫描本地音乐
  10. jlink烧写linux内核,如何利用JLINK烧写U-boot到NAND Flash中