查看ad\u uart.c中的代码,我可以看到以下内容:
void ad\u uart\u write\u async(uart\u device dev,const char*wbuf,size\u t wlen,ad\u uart\u user\u cb,
void*用户数据)
{
uart\U设备\U配置*设备=(uart\U设备\U配置*)设备;
uart\U总线\U动态\U数据*数据=设备->总线\U数据;
if((设备->标志和辅助设备标志锁定异步)){
ad\u uart\u bus\u acquire\u ex(开发,ad\u uart\u RES\u TYPE\u WRITE);
}
数据->写入\u cb=cb;
数据->写入数据=用户数据;
hw\u uart\u send(设备->总线id,(const uint8\u t*)wbuf,wlen,ad\u uart\u write\u callback,dev);
}
似乎在设置ad\u uart\u DEVICE\u FLAGS\u LOCKING\u ASYNC时,会调用“ad\u uart\u bus\u acquire\u ex(..)”函数。
我对这个代码片段的解释是,在设置设备标志的情况下,当使用async call函数时,我不必自己调用ad\uart\u bus\u acquire\u ex(…)。
如何配置UART或适配器,该标志是否已设置?
致以最诚挚的问候
节食者
设备:
嗨,迪特尔,
让我检查一下你的问题,然后尽快回复你。
谢谢,下午好
嗨,迪特尔,
你能澄清你的问题并分享更多关于你想要完成的事情的信息吗?通常,我强烈建议您不要修改适配器和SDK文件。适配器应该在SDK提供的位置使用。如果您做了任何修改,不能保证它们能按预期工作。
谢谢,下午好
你好,
我想知道异步情况下如何使用uart适配器。传输模式。文档中的示例仅显示了正常(阻塞)模式。
因此,我查看了适配器代码(我不想更改它),但不清楚如何正确使用该代码。这可以是一系列代码,如示例中所示,也可以是我所说的一些提示,当预期用途是异步传输时,如何正确配置UART。
我希望这能澄清我的问题。如果你需要更多的细节来回答我的问题,请告诉我。
致以最诚挚的问候
节食者
嗨,迪特尔,
请问你指的是哪个例子?您应该使用所需的UART配置打开适配器,应使用ad\u UART\u open()打开适配器。然后您应该为异步uart写入执行ad\u uart\u write\u async()。最后,您应该使用直到所有UART事务完成并关闭适配器(ad\u UART\u close)。
谢谢,下午好
你好,
我举的例子在您的文档中:DA1468x软件平台参考
你在回答中描述的顺序正是我实现的。所以这并没有真正的帮助。因此,我仔细研究了AD\UART\u DEVICE\u FLAGS\u LOCKING\u ASYNC的定义。在ad\u uart\u write\u async(..)函数中选中此标志,以执行对ad\u uart\u bus\u acquire\u ex(dev,ad\u uart\u RES\u TYPE\u write)的必要调用;
我最初的问题是如何配置这个标志设置的UART。现在我自己找到了答案,我的应用程序也按预期运行了。
问题的答案是:
必须使用宏UART\u DEV(..),而不是在platform\u devices.h文件中使用宏“UART\u BUS(..)”,因为这个宏还将采用“\u flags”参数,在这里我可以放置AD\u UART\u DEVICE\u flags\u LOCKING\u ASYNC定义。
如果用户想使用UART的异步函数,最好将此提示作为注释添加到文档中。
致以最诚挚的问候
节食者
嗨,迪特尔,
感谢分享您的解决方案。我已要求在下一个文件版本中执行您对文件的建议添加。
/MHv公司