工具/软件:TI-RTOS
CC640 4x4定制板、ble_sdk_2_02_01_18、tirtos_cc13xx_cc26xx_2_20_01_08、
CCS 6.2、XDS 200调试器。
自定义应用在读取回调模式下使用 UART 驱动程序。 UART 接收
一个字节。 它还使用 SPI 和 ADC 驱动器。 UART 仅在传感器期间使用
校准以通过有线连接与外部处理器通信。
当将 ble 堆栈升级为使用 ADC 驱动程序时、传感器将到达
硬故障强制总线故障 PRECISERR。 超时的上限
通过 UART 接收的字节增加、该错误消失。
但是、处理了 UART 回调例程中的一些调试语句
通过 RTOS 队列(粘贴在下面带下划线并以粗体突出显示)。 时间
删除了这些语句、总线故障错误将再次发生。 任务堆栈
如果发生总线故障、ROV 中会出现溢出、但不会出现溢出。
这些语句调试不会影响传感器的稳态处理。 传感器
还能够通过 3小时校准过程和维持 UART 通信
恢复稳态运行。
为什么固件对是否存在这些调试语句很敏感? 可以
这表示某种类型的任务堆栈溢出? 或者它们是否有助于唤醒
通过 RTOS 队列处理的函数中的 UART 驱动程序活动?
当包含多个字节的消息时、UART 回调停止工作
除非 RTOS 队列函数由这些调试语句唤醒、否则将收到该消息。
谢谢、
Priya
静态空接收 UartMsg (uint8_t 值)
{
静态 uint8_t i、长度= 5;
system_printf ("\nvalue="%x clkCntDiff =%d clkCnt=%d pekCnt=%d"、value、clkCnt-pitekCnt、clkCnt、pitekCnt、pitekCnt);
静态空 UART_enqueueMsg (uint8_t 值)
{
sbpEvt_t *pMsg;
//创建消息的动态指针。
if (pMsg = iCall_malloc (sizeof (sbpEvt_t)))
{
pMsg->HDR.EVENT = UART_MSG_EVT;
pMsg->HDR.state =值;
PIN_setOutputValue (PinHandle、Board_HGM_OUT、1);
//将消息排队。
Util_enqueueMsg (appMsgQueue、sem、(uint8*) pMsg);
}
}
静态空 SendUartMsg (空)
{
//通话模式确认
if (UART_Rx_BUf[0]= 0x55){
uint8 txbuf[]={0x07};
UART_WRITE (UART、txbuf、1);
PIN_setOutputValue (PinHandle、Board_HGM_OUT、0);
处理 UARTMsg = 0;
waitForUARTMessage();
返回;
}





