TI中文支持网
TI专业的中文技术问题咨询交流网站

CC2642R-Q1: 在persistent_app里调用PIN_open()函数死机

Part Number:CC2642R-Q1

在persistent_app里调用PIN_open()函数死机,屏蔽掉它,程序运行正常。

但是同样的配置,在user app程序里调用就正常。

请问一下:是这个函数访问地址在persistent_app里超出范围了吗?该如何解决这个问题?映射还是别的替代可调用函数?谢谢!

备注:persistent_app程序空间是足够的

Kevin Qiu1:

PIN_open()没有此限制,它只是分配pin。persistent_app例程原本也有使用PIN_open(),运行也没有任何问题

,

Janet xu:

可是我的persistent_app里真的一用就死机,同样的配置程序在multi_role里就运行正常,可能是什么原因或配置导致的呢?

我的persistent_app工程已经大改了官方的内容,但是修改后的程序一切功能运行正常。现在还需要一个IO口中断输入来完成一件事,就完美收官了,可是这个PIN_open()函数一调用就死机,有什么好办法解决呢?

,

Kevin Qiu1:

可能的原因是PIN_open()被重复使用或者引脚已经被使用了,检查程序具体卡在哪一步了

,

Janet xu:

我以下步骤很容易复现该问题(在persistenr_app程序里调用PIN_open()函数导致死机):

1、我新建一个文件夹, 然后导入官方bim,persistenr_app及simple_peripheral_oad_onchip三个程序。编译后写入2642,在手机上很容易就搜到SP OAD on-chip,写入一个非0值后,就变成OAD Persistent App蓝牙名了。

2、我在persistent_app.syscfg里添加一个IO口中断输入 ,然后在oad_persistent_app.c里添加如下程序 编译后写入CC2642。这时在手机上很容易就搜到SP OAD on-chip,写入一个非0值后,就找不到我的设备了!(无OAD Persistent App蓝牙名出现)。

请问如何解决呢?我用的是SDK5.40版本。

谢谢

,

Janet xu:

就我自己的程序而言(前面的回复是针对纯官方的程序操作的),我确定整个persistenr_app程序里只调用了一次PIN_open()函数(我把按键与LED四引脚全去掉了),而且我换别的IO口,情况也是一样,就是必然会死机。一定是PIN_open()函数有什么使用限制。

,

Kevin Qiu1:

我检查了PIN_open(),没有任何的限制,应该是你的OAD程序本身的问题:OAD升级过程中不能中断,否则就会进入到Persistent App

另外SDK5.40已经删除了PIN驱动程序,改为了GPIO+:

// OAD eventsif(events & SP_OAD_NO_MEM_EVT){// The OAD module is unable to allocate memory cancel OADOAD_cancel();#ifdef LED_DEBUG// Diplay is not enabled in persist app so use LEDGPIO_write(CONFIG_GPIO_RLED, 1);
#endif //LED_DEBUG}

,

Janet xu:

非常感谢,已经按照gpio的方式配置成功。可以结帖,谢谢!

,

Kevin Qiu1:

不客气

赞(0)
未经允许不得转载:TI中文支持网 » CC2642R-Q1: 在persistent_app里调用PIN_open()函数死机
分享到: 更多 (0)