查看Ad_uart.c中的代码我可以看到以下内容:
void ad_uart_write_async(uart_device dev,const char * wbuf,size_t wlen,ad_uart_user_cb cb,
void * user_data)
{
UART_DEVICE_CONFIG * device =(uart_device_config *)dev;
uart_bus_dynamic_data * data = device-> bus_data;
if((设备 - >标志&ad_uart_device_flags_locking_async){
ad_uart_bus_acquire_ex(dev,ad_uart_res_type_write);
}
data-> write_cb = cb;
data-> write_cb_data = user_data;
hw_uart_send(device-> bus_id,(const uint8_t *)wbuf,wlen,ad_uart_write_callback,dev);
}
似乎“ad_uart_bus_acquire_ex(..)”函数被调用,当设置了ad_uart_device_flags_locking_async时调用。
我对此代码段的解释是,在设置设备标志时,我不必在自己使用ASYNC调用函数时调用AD_UART_BUS_ACQUIER_EX(..)。
如何配置UART或适配器,即设置此标志?
此致
节食者
设备:
嗨Dieter,
让我检查你的问题并尽快回复你。
谢谢,PM_DIALOG.
嗨Dieter,
您能否澄清您的问题并分享更多关于您想要完成的内容的投入?通常,我强烈建议您不要修改适配器和SDK文件。应在SDK提供适配器。如果您进行任何修改,则无法保证他们将按预期工作。
谢谢,PM_DIALOG.
你好,
我想知道如何在异步时使用UART适配器。转移模式。您的文档中的示例只显示了Nomal(阻塞)模式。
因此,我看起来在适配器代码(我不想肯定地改变),并且对我来说并不清楚如何正确使用此代码。这可以是示例中的代码序列,或者我说的一些提示在预期用途是异步转移时如何正确配置UART。
我希望这能为你澄清我的问题。如果您需要更多询问我的问题的详细信息,请告诉我。
此致
节食者
嗨Dieter,
我可以在你指的是哪个例子中询问?您应该使用所需的UART配置打开适配器,应使用AD_UART_OPEN()以打开适配器。然后,您应该为异步UART编写执行AD_UART_WRITE_ASYNC()。最后,您应该使用,直到完成所有UART事务并关闭适配器(AD_UART_CLOSE)。
谢谢,PM_DIALOG.
你好,
我追求的一个例子是在您的文档中:DA1468X软件平台参考
您在答案中描述的序列正是我所实施的。所以这并没有真正的帮助。因此,我仔细研究了AD_UART_DEVICE_FLAGS_LOCKING_ASYNC的定义。在AD_UART_WRITE_ASYNC(..)函数中检查此标志,以对AD_UART_BUS_ACQUIER_EX(DEV,AD_UART_RES_TYPE_WRITE)进行必要的调用;
我的初始问题是如何配置此标志设置的UART。现在我发现了自己,我的应用程序现在正如预期的那样运行。
问题的答案:
在platform_devices.h文件中而不是使用宏“UART_BUS(..)”,必须使用宏UART_DEV(..),因为此宏也将采用“_flags”参数,其中我可以将ad_uart_device_flags_locking_async定义。
如果用户想要使用UART的_Async - 函数,将此提示添加此提示是对您的文档的备注。
此致
节食者
嗨Dieter,
感谢您分享解决方案。我要求您提出的文档添加到下一个文档版本中。
/ mhv.