工具/软件:Code Composer Studio
您好!
我编辑了从 tirex 获取的 MMW_DSS_16xx 毫米波演示代码中的 dss_main.c 中的'mwDemo_dsDataPathProcessEvents '函数。 我希望通过 UART 数据端口推送乒乓 ADC 缓冲器数据。 我在配置文件配置中提供了大量空闲时间、每帧仅传输1个线性调频脉冲。
问题:在"Data COM terminal (数据 COM 终端)"窗口中看不到任何内容。
此外、
1.我没有遇到任何编译错误。
2.我没有遇到任何运行时错误。
3.我没有遇到任何线性调频脉冲或帧截止中断。
4.我可以在统计数据中看到我的帧数在稳步增加。
因此、代码在任何时候都不会卡住。 因此、我怀疑'UART_writePolling'调用中存在一些错误。
DataPathProcessEvents 代码如下所示。 请帮助我找到上述观察的原因。
#define pingPongId (x)((x)和0x1U) #define isPong (x)(pingPongId (x) ) static Int32_t MmwDemo_dsDataPathProcessEvents (UINT 事件) { MmwDemo_DSS_DataPathObj * dataPathObj; volatile uint32_t StartTime; dataPathObj =&gMmwDssMCB.dataPathObj[gMmwDssMCB.subFrameIndx]; /*处理 dataPath 事件*/ switch (事件) { 案例 MMWDEMO_CHIRP_EVT: /*递增事件统计数据*/ gMmwDssMCB.stats.chirpEvt++; uint16_t 线性调频脉冲指数; 对于(线性调频脉冲指数= 0;线性调频脉冲指数< dataPathObj->numChirpsPerChirpEvent;线性调频脉冲指数++) { //MmwDemo_processChirp (dataPathObj、(uint16_t)线性调频脉冲索引); volatile uint32_t startTime2; startTime2 = Cycleprofiler_getTimeStamp(); gCycleLog.interChirpWaitTime += Cycleprofiler_getTimeStamp()- startTime2; if (isPong (dataPathObj->chirpCount))//从 Pong 传输 { UART_writePolling (gMmwDssMCB.loggingUartHandle、(uint8_t *)&dataPathObj->ADCdataBuf[0]、(uint32_t) sizeof (uint32_t)*(dataPathj->numAdcSamples)*(dataPath->NumRj);(dataPathNumRj) 其他 //从 Ping 传输 { UART_writePolling (gMmwDssMCB.loggingUartHandle、(uint8_t *)&dataPathObj->ADCdataBuf[dataPathObj->numChirpsPercrampEvent* dataPathObj->numAdcSamples]、(uint32_t)(numPathObj->numPath-32_t))* dataPathObj->chirpCount++; dataPathObj->txAntennaCount++; if (dataPathObj->txAntennaCount => dataPathObj->numTxAntennaCount) { dataPathObj->txAntennaCount = 0; dataPathObj->dopplerBinCount++; if (dataPathObj->dopplerBinCount => dataPathObj->numDopplerBins) { dataPathObj->dopplerBinCount = 0; dataPathObj->chirpCount = 0; } } gMmwDssMCB.dataPathContext.chirpProcToken--; dataPathObj->timingInfo.chirpProcessingEndTime =循环分析器_getTimeStamp(); if (dataPathObj->chirpCount = 0) { //MmwDemo_waitEndOfChirps (dataPathObj); load_update(); dataPathObj->timingInfo.activeFrameCPULoad = Load_getCPULoad(); dataPathObj->cycleLog.interChirpProcessingTime = gCycleLog.interChirpProcessingTime; dataPathObj->cycleLog.interChirpWaitTime = gCycleLog.interChirpWaitTime; gCycleLog.interChirpProcessingTime = 0; gCycleLog.interChirpWaitTime = 0; StartTime = Cycleprofiler_getTimeStamp(); // MmwDemo_interFrameProcessing (dataPathObj); dataPathObj->timingInfo.interFrameProcCycles =(Cyclprofiler_getTimeStamp ()- StartTime); dataPathObj->cycleLog.interFrameProcessingTime = gCycleLog.interFrameProcessingTime; dataPathObj->cycleLog.interFrameWaitTime = gCycleLog.interFrameWaitTime; gCycleLog.interFrameProcessingTime = 0; gCycleLog.interFrameWaitTime = 0; gMmwDssMCB.dataPathContext.interFrameProcToken=0; if (dataPathObj->CommonclipCfg->measureRxChanCfg.enabled) { MmwDemo_measureResultOutput (dataPathObj); } //MmwDemo_dsDataPathOutputLogging (dataPathObj);//将检测到的对象发送到日志缓冲区 dataPathObj->timingInfo.interFrameProcessingEndTime = Cycleprofiler_getTimeStamp(); } 中断; 案例 MMWDEMO_FRAMESTART_EVT: /*递增事件统计数据*/ gMmwDssMCB.stats.frameStartEvt++; load_update(); dataPathObj->timingInfo.interFrameCPULoad = Load_getCPULoad(); MmwDemo_dsAssert (dataPathObj->chirpCount =0); 中断; 案例 MMWDEMO_BSS_FRAME_TRIGGER_READY_EVT: /*递增事件统计数据*/ gMmwDssMCB.stats.frameTrigEvt++; 中断; 默认值: 中断; } 返回0; }
谢谢。