微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 串口的DMA模式发送函数关于dmaCfg.txSel的一点疑问

串口的DMA模式发送函数关于dmaCfg.txSel的一点疑问

时间:10-02 整理:3721RD 点击:

在Zigbee的DMA串口发送函数 static uint16 HalUARTWriteDMA(uint8 *buf, uint16 len)中有如下一段代码

/* If an ongoing DMA Tx finished while this buffer was being *appended*, then another DMA Tx
* will have already been started on this buffer, but it did not include the bytes just appended.
* Therefore these bytes have to be re-copied to the start of the new working buffer. 
*/
HAL_ENTER_CRITICAL_SECTION(his);
if (txSel != dmaCfg.txSel)
{
HAL_EXIT_CRITICAL_SECTION(his);
txSel = dmaCfg.txSel;
txIdx = dmaCfg.txIdx[txSel];

for (cnt = 0; cnt < len; cnt++)
{
dmaCfg.txBuf[txSel][txIdx++] = buf[cnt];
}
HAL_ENTER_CRITICAL_SECTION(his);
}

dmaCfg.txIdx[txSel] = txIdx;

注释说了一堆东西,但感觉这段代码几乎不会用到吧? dmaCfg.txSel在中断中并没有被改变啊,只是在

HalUARTPollDMA中会取成另一个通道,请问Ti的工程师 我可以去掉这段代码吗?

主要用来防止两个地方同事操作这个全局变量的话就会有问题

Hi,VV:

       我用的是2.5.1.a最新协议栈,搜索并没有发现有两个地方会修改这个变量。 是否是之前版本的历史遗留问题呢

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

网站地图

Top