嗨,对话框
我们用SDK V1.06的pxp_reporter进行演示。在BLE广告的每个结尾之后,我们使用UART2来打印tf字符串。首先,它可以正常打印字符串。但是我们发现它会卡在" while (hw_uart_write_buf_full(uart));”之后。系统从长时间睡眠模式苏醒后,uart似乎出现了问题。我们的代码如下:
静态孔隙periph_init(空白)
{
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_0 HW_GPIO_MODE_OUTPUT,
HW_GPIO_FUNC_UART2_TX);
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_2 HW_GPIO_MODE_INPUT,
HW_GPIO_FUNC_UART2_RX);
}
空白retarget_init(空白)
{
Uart_config uart_init = {
.baud_rate = HW_UART_BAUDRATE_115200,
. data = HW_UART_DATABITS_8,
鸡毛蒜皮= HW_UART_STOPBITS_1,
.parity = HW_UART_PARITY_NONE,
.use_dma = 0,
.use_fifo = 1,
.rx_dma_channel = HW_DMA_CHANNEL_INVALID,
.tx_dma_channel = HW_DMA_CHANNEL_2,
};
hw_uart_init (HW_UART2 &uart_init);
}
{
...
hw_uart_send (HW_UART2,“\ \ n123412341234 \ r \ n”);
...
}
无效hw_uart_write(HW_UART_ID uart, uint8_t data)
{
//如果发送保持寄存器已满则等待
而(hw_uart_write_buf_full (uart));/ /这里卡住了
//向发送FIFO写入数据
非洲联合银行(uart) - > UART2_RBR_THR_DLL_REG =数据;
}
我的代码有问题吗?
嗨提到,
直接使用低级别的hw函数(hw_ prefix函数)来与68x的外设交互,一般不建议对任何外设使用,这就是创建适配器的原因。对于调试或常规打印,因为您想使用UART2,所以可以使用CONFIG_RETARGET标志,这将把printf功能重定向到UART2(或UART,取决于配置)。您可以查看custom_config_qspi.h文件中的ble_multi_link,并检查CONFIG_RETARGET是如何配置的,这是使用CONFIG_RETARGET标志的示例之一。如果你不想使用RETARGET标志,那么你应该使用适配器而不是低级别驱动程序。
由于MT_dialog
嗨,对话框
我们想同时使用uart1和uart2。现在uart1被配置为retarget端口,它工作得很好,我还发现它使用低水平的hw功能,但不是适配器。因此,我根据retarget_init()代码配置了uart2。关于使用uart适配器,我如何学习使用它?
嗨提到,
您可以在UM-B-044用户手册中查看如何使用适配器:DA1468x软件平台参考,你也可以找到关于适配器和可用的信息功能doxygen (SDK doc文件夹和搜索索引html),你会发现所有可用的函数如何使用适配器和也有SDK演示的例子。如果您想使用两个uarts,我建议使用适配器的使用在您的应用程序。
由于MT_dialog