我用的cc1310 launchpad 在15.4 stack 写的程序。
1、我是通过串口发送数据给collector,让collector进行调用HAL_SYSTEM_RESET();进行软件复位,但是我发现 每次下载完程序之后,第一次进行调用这个函数进行复位的时候,collector关闭之后就不能重启了,我重新上电或是硬件复位之后,无论调用多少次,也不会出现这个现象。还有就是 我在sensor中调用Ssf_clearAllNVItems();删除网络信息之后,在调用HAL_SYSTEM_RESET();进行软件复位,有时候也不能重启。这是为什么?
2、我在collector 串口接收回调函数中,调用sendMsg();进行数据无线发送,但是当串口接收到数据 调用串口回调函数的时候,sendMsg();发送数据失败,然后我只好把sendMsg()放到主循环中,才可以发送。其中函数中的元素都是相同的配置,为什么不能在串口接收回调函数中调用sendMsg();呢?
串口的配置如下:
谢谢!
Eggsy Pang:
问题1. 让collector进行调用HAL_SYSTEM_RESET();进行软件复位,是第一次不成功,后面都成功吗?
Eggsy Pang:
问题二:
sendMsg这个函数执行时间很长,不应该放在串口中断函数里执行,这是TIRTOS的系统机制
解决方法:可以利用信号量,当串口中断,发信号量,在主函数里收到信号量后,在执行sendMsg,这样比较规范
ruimao cong:
回复 Eggsy Pang:
我就是下载完程序之后,第一次进行复位操作,就会出现这个问题。但是如果下完之后,我拔插断一次电,或是出现这个问题之后,硬件复位,这个现象就没有了,复位就正常了。
user4853075:
回复 ruimao cong:
我也发现这个问题,请问楼主这个问题解决了吗? 如何解决的?
user4853075:
回复 user4853075:
TI工程师,能否看看是怎么回事?
下载程序后通过软件方式配置寄存器重启,系统无法启动起来。但硬重启(按键)一次后,后面软重启就正常了。
VV:
回复 user4853075:
Bojian Gong
TI工程师,能否看看是怎么回事?
下载程序后通过软件方式配置寄存器重启,系统无法启动起来。但硬重启(按键)一次后,后面软重启就正常了。
user4853075:
回复 VV:
我目前用的就是SysCtrlSystemReset接口,而且从代码上看它与HAL_SYSTEM_RESET设置的是同一个寄存器。
所以,猜测是通过JTAG烧写程序后,哪些寄存器没有复位好,导致重启不行。
请帮忙看看是哪里问题?
ruimao cong:
回复 user4853075:
没有解决,就算跑普通的例程也会出现这个问题。
ruimao cong:
回复 VV:
我后来也换成调用这个直接复位还是不行。
VV:
回复 user4853075:
@Bojian Gong,
能否把你复现这个问题的步奏描述下,最好能够拿原始的例程做测试,这样我们可以基于同样的环境进行验证。
谢谢!