TI中文支持网
TI专业的中文技术问题搜集分享网站

关于cc1310在15.4stack中的软件复位,及在串口接收回调函数中调用SendMsg()的问题

我用的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,

能否把你复现这个问题的步奏描述下,最好能够拿原始的例程做测试,这样我们可以基于同样的环境进行验证。

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 关于cc1310在15.4stack中的软件复位,及在串口接收回调函数中调用SendMsg()的问题
分享到: 更多 (0)