当前位置: 首页 > news >正文

【WCH蓝牙系列芯片】-基于CH585开发板—IO口(GPIO)外部中断唤醒蓝牙睡眠模式

【WCH蓝牙系列芯片】-基于CH585开发板—IO口(GPIO)外部中断唤醒蓝牙睡眠模式

-------------------------------------------------------------------------------------------------------------------------------------

  在蓝牙从机可以通过宏定义处输入HAL_SLEPP=1,这样就可以开启蓝牙从机低功耗模式。

  可以新建一个文件,用来配置GPIO的外部中断初始化状态。

image

  添加上外部中断服务函数

#include "CONFIG.h"
#include "HAL.h"volatile uint8_t flag_wakeup = 0;
uint8_t i = 0;//GPIo的外部中断初始化
void EXTI0_pwr_INIT(void)
{GPIOB_ModeCfg( GPIO_Pin_4, GPIO_ModeIN_PU );   //部分GPIO中断引脚初始化GPIOB_ITModeCfg( GPIO_Pin_4, GPIO_ITMode_FallEdge ); // 下降沿中断PFIC_EnableIRQ( GPIO_B_IRQn );//开启GPIOB中断PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Long_Delay); //表示启用外设唤醒, GPIO 外设唤醒标识,Long_Delay:表示要配置长延迟模式
}//中断函数
__HIGH_CODE
__attribute__((interrupt("WCH-Interrupt-fast")))
void GPIOB_IRQHandler( void )
{
//    PRINT("%x \n",GPIOB_ReadITFlagPort());        //读GPIOA口中断状态
//    PRINT("%x \n",GPIOB_ReadITFlagBit(GPIO_Pin_4)); //读GPIO4口中断状态
//    PRINT("%x \n",GPIOB_ReadITFlagBit(GPIO_Pin_7)); //读GPIO7口中断状态flag_wakeup = 1;GPIOB_ClearITFlagBit( GPIO_Pin_4);//清中断
}

 

  在中断函数中,先检测是否有PB4的中断标志状态,配置为下降沿中断触发,在中断服务函数中,通过设置标志位flag_wakeup置1,这样就代表触发PB4的IO中断触发

  此时,IO的配置已经完程序,可以在蓝牙从机中的SLEEP.c文件中,进行IO中断后,进行唤醒的处理,在进入睡眠函数之前,进行中断标志位的判断,如果中断标志位置位后,检查到flag_wakeup == 1,此时就直接return 0;退出睡眠。 

image

  然后在SLEEP.c文件中,在添加中断函数的初始化,这样在低功耗模式下将GPIO外部中断函数初始化,配置GPIO中断唤醒源为PB4.

image

  在定义一个清除睡眠标志位操作的事件任务,在GPIO_WAKE_BLE_EVT中进行一秒一次的循环操作,判断当前flag_wakeup是否为1,如果为1,就清0,清标志位,这样在睡眠函数中,就不会直接return 0;退出睡眠。而是会一直保持低功耗模式。

image

  这样,整个gpio操作唤醒蓝牙低功耗模式流程就以完成。

 

http://www.hskmm.com/?act=detail&tid=19792

相关文章:

  • 【2025-09-26】奋斗逻辑
  • 【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全 - 教程
  • 关于修改 linux 系统中优先使用中文结构
  • Discord桌面应用远程代码执行漏洞分析
  • DRL模型训练:原始奖励函数记录以及绘制
  • 中国DevOps平台竞品分析:安全合规与技术生态的双重较量
  • experiment 1
  • 图领域的METIS算法介绍 - zhang
  • CANOpen safety SRDO相关问题总结
  • Prometheus源码专题【左扬精讲】—— 监控系统 Prometheus 3.4.0 源码解析:head_wal.go 的 WAL 写入策略与缓存管理源码解读
  • 电子通信词汇中英文对照
  • 平衡树
  • 完整教程:【有源码】基于Hadoop+Spark的AI就业影响数据分析与可视化系统-AI驱动下的就业市场变迁数据分析与可视化研究-基于大数据的AI就业趋势分析可视化平台
  • Tomcat中启用h3的方法是什么
  • k8s-Namespace
  • 国产化Excel开发组件Spire.XLS教程:C# 写入 Excel ,轻松将数据导出到工作表
  • 牛客刷题-Day6
  • 数字化转型浪潮下:10款主流项目管理工具横向测评与选型指南
  • 借助Aspose.Email,使用 Python 将 EML 转换为 MHTML
  • python+springboot+django/flask的医院食堂订餐系统 菜单发布 在线订餐 餐品管理与订单统计系统 - 教程
  • 计算机网络学习笔记 - 浪矢
  • 数据结构以及LeetCode常用方法 - 浪矢
  • App Store 上架完整流程解析,iOS 应用发布步骤、ipa 文件上传工具、TestFlight 测试与苹果审核经验
  • 使用 Zig 编写英文数字验证码识别工具
  • 数数学习笔记
  • 6 个替代 Microsoft Access 的开源数据库工具推荐
  • 20250626_黔西南网信杯_wireshark
  • Ubuntu STA+AP 开机自启完整方案
  • PDE和CFD的区别?
  • Gitee:中国开发者生态的基石与数字化转型的加速器