【已解决】下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


caishupeng
Posts: 16

为什么我下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的IO口值为什么为1

Attachments
中断函数.png
caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

或者说我怎么才能知道是哪个IO口引脚中断唤醒了

caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

芯片平台:FR8018HA Bluetooth 芯片
SDK: FR8018HA_TuyaOS-3.9.0

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

如下图所示,FR8018HA_TuyaOS-3.9.0默认的代码中,rx_pin就是触发外部中断的引脚:

Snipaste_2024-08-08_14-33-27.png

您截图中的代码看起来和默认代码似乎不一样,建议使用默认代码测试下看看。

caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

好的,我试试

caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

现在用户有一个需求,当我插上TYPE-C后,Reset引脚会被置高电平,然后产生复位,如何在产生复位之前把数据写入flash,或者说复位后不清除该数据的RAM,使得我重新上电后可以读取数据,目前开发使用的是富芮坤的FR-8018HA芯片(这个问题能帮我看一下?)

User avatar
逻辑的院子
Posts: 272
Contact:

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

您这个情况是硬件复位,是不可预知的,所以也不可能在复位前在软件上做任何处理;
硬件复位相当于重新上电,RAM里面的数据必然会被清除;

建议您考虑下从硬件角度来解决问题。

caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

设置RAM2,,,前提是你的RAM空间要有0x8200的大小,,

在用at指定空间就可以了,比如:

unsigned char APP_MAC[6] attribute((at(0x20008000)));

这样只要不带电属于热启动就不会被初始化
(网上的这种说法是否可行,针对keil软件进行RAM设置)

caishupeng
Posts: 16

Re: 下拉中断唤醒了,ool_read32(PMU_REG_GPIOA_V)函数读出来的中断IO口值为什么为1

变量属性修饰符attribute((section(“name”),zero_init))用于将变量强制定义到name属性数据节中,zero_init表示将未初始化的变量放到ZI数据节中。因为“NO_INIT”这显性命名的自定义节,具有UNINIT属性。

比如:unsigned char APP_MAC[6] attribute(((section(“NO_INIT”),zero_init));

唯一缺点是不能指定地址,同样不能初始化
(还有这种)

Post Reply