嗨,对话框中,
我尝试使用P2_0和P2_1(我不使用32K xtal)作为按钮使用。当我分别将P2_0和P2_1配置为按钮时,我发现了两个不同的电流消耗结果。
使用P2_0作为按钮,我在休眠模式下获得3 uA;然而,使用P2_1作为按钮,在休眠模式下获得15 uA。我在P2_0和P2_1中配置了同样的东西(使用宏
AD_GPIO_INTR_INSTANCE (.........)).这两个引脚在硬件上有什么不同吗?SWDIO和SWCLK具有相同的结果(SWCLK的功耗高于
SWDIO)。
Q2。系统使用32K xtal和内部RC 32K对LP_CLK有什么区别?不同的电力消耗?
第三季。是否可以共享QSPI引脚(P00~P05)作为GPIO来控制外部设备而不影响flash代码的执行?
谢谢你的帮助。
设备:
嗨nigelyang,
Q1: P2_0和P2_1是GPIO,但它们可以与XTAL复用。你在哪里找到AD_GPIO_INTR_INSTANCE宏?同时,请描述一下你想完成的任务。
问题2:RCX是一个简单的方法有一个低功率时钟,而不添加一个外部晶体振荡器到你的板。RCX不像外部XTAL那么稳定,使用RCX时功耗更高。
Q3:不,不可能共享QSPI引脚,因为它们是专用于QSPI控制器的。当使用QSPI控制器时,你不需要配置这些引脚。
谢谢,PM_Dialog
Q1:我在wrbl project中找到了它,并在我的申请中引用了它,如下所示
/ * *
* \brief gpio中断项
*
* \param [in] _name名称,稍后将用于引用实例
* \param [in] _port触发引脚端口id
* \param [in] _pin触发引脚的引脚id
* \param [in] _press_callback函数在GPIO断言时被调用
* \param [in] _release_callback函数在GPIO被取消断言时被调用
*/
#define AD_GPIO_INTR_INSTANCE(_name, _port, _pin, _press_callback, _release_callback) \
static INITIALISED_PRIVILEGED_DATA ad_gpio_intr_config dev_##_name = {\
.index = CONV_PORT_PIN_TO_INDEX ((_port < < 4) | (_pin & 0 x0f)) \
.pressed = false, \
.press_cb = _press_callback, \
.release_cb = _release_callback, \
.next_element = NULL, \
};\
静态ad_gpio_intr_config * const _name = &dev_##_name;
嗨nigelyang,
你能说明一下你在使用哪个项目吗?你是使用可穿戴项目还是SDK项目的例子?如果你正在使用可穿戴项目,你是否购买了可穿戴硬件?否则,如果你使用的是SDK示例,为什么要从可穿戴参考设计中获得代码?
谢谢,PM_Dialog
嗨,对话框中,
我是基于SDK项目开发我的应用代码,但是我在我的项目中阅读和使用了WRBL项目代码的一部分,特别是按钮设置部分。如果使用P2_1和P2_4作为输入,我的按钮设置是否会导致大电流?如果没有任何硬件差异,这可能是PCB设计问题?!但是,我的两个PCB都有这种现象。谢谢你的帮助。
嗨nigelyang,
对不起,你的描述让我有点困惑。您能确切地描述一下您想要实现的是什么吗?如果我能正确理解的话,你们有定制板吗?请让我知道按钮的设置,我将为您提供正确的代码片段配置。
谢谢,PM_Dialog
嗨,对话框中,
是的,我正在执行自定义板(我自己的板)。我曾经尝试过用低到高的信号来唤醒我的睡眠系统,但是失败了。所以我尝试模仿wrbl项目中的按钮设置,以保存这个问题。简化我的问题,我下面关于外部唤醒引脚的代码有错吗?(从低到高触发)
hw_gpio_configure_pin(STATUS_PORT, STATUS_PIN, HW_GPIO_MODE_INPUT, HW_GPIO_FUNC_GPIO, 0);//0:作为Low Pin: P2_3
hw_wkup_init(空);
hw_wkup_configure_pin(STATUS_PORT, STATUS_PIN, 1, HW_WKUP_PIN_STATE_HIGH);/ /触发@high
hw_wkup_register_interrupt (Status_wkup_handler, 1);
/ * Status_wkup_handler * /
静态孔隙FP_Status_wkup_handler(空白)
{
printf("这里是Status_wkup_handler \r\n");
hw_wkup_reset_interrupt ();
notify_task_verify_ok ();//
}
嗨nigelyang,
您将在附件中找到一个示例代码片段,该代码片段演示了如何通过按下一个按钮来唤醒您。
谢谢,PM_Dialog