微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310多任务模式下死机,紧急,复位没有反应。

CC1310多任务模式下死机,紧急,复位没有反应。

时间:12-23 整理:3721RD 点击:

一、CC1310功能需求说明:

1、  实现433MHZ频段无线数据的接收与发送。

2、  实现串口通信功能,即UART功能

3、  实现IIC接口数字温度传感器的温度值采集

4、  实现采用定时器TMRA延时1S钟中断功能。

二、设计逻辑:

1、无线接收功能一直处于等待接收数据状态。

2、当无线接收到命令数据后,采用无线发送数据功能返回命令。

 

3、UART一直处理等待接状态,即从动功能,当收到主机的命令后,返回数据给从机。

 

5、  IIC接口1S钟读取一次数字温度传感器的温度值。

 

6、  当无线接收在1分钟没有收到主机发来的读取温度命令时,即无线将自动将温度值主动发送一次给接收主机。

 

当前遇到问题:

1、采用TIRTOS时,无线接收采用一个TASK,无线发送采用一个TASK,单一的一个TASK时,工作完全正常,当使用两个TASK时,工作不正常,发送TASK时就会程序会跑飞或是死机EasyLink_transmitAsync(&txPacket, txDoneCb);

           /* Wait 300ms for Tx to complete */

           if(Semaphore_pend(txDoneSem, (300000 / Clock_tickPeriod)) == FALSE) 

在上述红色语句处程序跑飞,无法再回到TASK中

 

根据上述的罗辑问题,多TASK应该如何来实现?

建议你把无线接收和发送发在一个task里面,并且确定的知道RF当前所处的状态。

比如,如果RF现在处于RX状态,你这时需要先退出RX状态,再将其置为TX状态进行数据发送。

现在是这么做的,在一个TASK里面进行的

我现在是RX建的一个TASK,但是发送的也是在这个TASK中执行,只是在另一个TASK中置TX的标志,然后RX的TASK任根据标志执行是发送还是接收

建了一个433的RX的TASK,和一个TMR的TASK,其它的都是在TMR的TASK里面通过分时执行各个功能的

我本意是RX一个TASK,TMR一个TASK,UART一个TASK,IIC一个TASK的

但是就是不行,超过2个TASK,程序就不干活了

超过2个task时,后面的task都创建成功了吗?

可以创建成功的,编译也是正常的。是否可以提供一个参考工程?

你可以使用ROV(RTOS Object View)在线查看一下你后面创建的几个task的状态。

另外,你可以关注一下使用Task_creat和Task_construct创建task的区别,避免由于堆栈分配不成功造成任务创建失败。

你可以参考一下rfWsnNode和rfWsnConcentrator例程。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top