Page 1 of 2

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

Posted: 2024年 Aug 7日 20:21
by caishupeng

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


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

Posted: 2024年 Aug 7日 20:48
by caishupeng

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


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

Posted: 2024年 Aug 8日 09:35
by 逻辑的院子

请提供您使用的芯片平台、SDK名称、SDK版本等信息


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

Posted: 2024年 Aug 8日 10:52
by caishupeng

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


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

Posted: 2024年 Aug 8日 14:37
by 逻辑的院子

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

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

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


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

Posted: 2024年 Aug 8日 17:19
by caishupeng

好的,我试试


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

Posted: 2024年 Aug 8日 17:19
by caishupeng

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


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

Posted: 2024年 Aug 8日 17:35
by 逻辑的院子

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

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


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

Posted: 2024年 Aug 8日 19:43
by caishupeng

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

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

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

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


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

Posted: 2024年 Aug 8日 19:43
by caishupeng

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

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

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