Part Number:CC2642R
尊敬的TI工程师你好:
我在SimplePeripheral_createTask()任务中调用函数可以执行到这里
但是在我自己创建的任务里调用SimplePeripheral_createTask()却不能跳到这里这是什么原因呀?
Galaxy Yue:
您好,
您的代码中是否含有其他case的情况,
传参是否正常?
目前推断的原因是您在自己创建的task中调用SimplePeripheral_createTask()时传参不正常。
您的SBP_DROY_CHANGE_EVT参数可能没传进去或者其他任务中断了现在这个进程。
,
?? ?:
你好他最后卡死到了这里
,
Galaxy Yue:
您好,可以把操作台提示的信息放上来吗?
需要查看一下您的代码
以及完整的这个Queue_put截图
,
?? ?:
工作台啥也没提示,这个Queue_put代码也是系统内的看不了
,
Galaxy Yue:
您好,根据console显示board reset complete
没有任何异常
是如何确定在哪一行代码卡死的
我刚用板子跑了一下,console结果是一样的,是正常的。
,
?? ?:
单步调试卡到Queue_put函数这里走不下去了
,
Galaxy Yue:
您好,考虑以下几个原因
1.队列已满,解决方法:扩大队列缓冲区。检测办法:在Queue_put函数之前加一些代码用来打印当前队列中的元素数量和缓冲区大小。
2.队列已空,根据图示暂不考虑。
3.断点和单步调试冲突。解决方法:关闭断点调试功能,或者重设断点并且尝试重新编译。
4.编译器优化会导致调试不准确,解决方法:可以禁用编译器优化尝试一下。
5.代码路径,受条件分支或者其他代码逻辑的影响,可能此处代码不会被执行。解决方法:检查代码逻辑,前后调用有无问题。
,
?? ?:
你好,根据您的提示 上边那个问题也得到解决,
但是现在我又在while循环和if判断里调用SimplePeripheral_enqueueMsg(SBP_DRDY_CHANGE_EVT, NULL);函数,该函数可以执行,但是却不执行对应的SBP_DRDY_CHANGE_EVT事件,。是时间被while循环或者if判断打断了嘛?该如何查看?
,
Galaxy Yue:
您好,由于您这边是自己改动的代码,没有完整代码我是看不到代码逻辑的。只能给您提供一些经验性的判断。
在编程语言的语法中,因为switch是一个选择判断语句,它必须满足您设定的条件后,才会执行下面的语句。
所以:1.根据您前后写的代码,您需要判断是否进入这个case情况。
2.在编译器中寻找该函数的定义,调用,传参,具体函数描述
3.最好不要缺省default语句,且用default处理异常情况。