嗨,对话
我们使用SDK v1.06 pxp_reporter演示。在BLE广告的每一结束之后,我们将UART2用于Printf String。首先,它可以正常打印字符串。但是我们发现它会陷入“hw_uart_write_buf_full(UART));”稍后。在系统从扩展睡眠模式下唤醒后,似乎有问题。我们的代码如下:
静电void 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);
}
void retarget_init(void)
{
UART_CONFIG UART_INIT = {
.baud_rate = hw_uart_baudrate_115200,
.data = hw_uart_databits_8,
.stop = 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,“\ r \ n123412341234 \ r \ n”);
......
}
void hw_uart_write(hw_uart_id uart,uint8_t数据)
{
//等待发送寄存器已满
而(hw_uart_write_buf_full(UART));//卡住了这里
//将数据写入传输FIFO
UBA(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 Flag,那么您应该使用适配器而不是低级驱动程序。
谢谢mt_dialog.
嗨,对话
我们希望使用UART1和UART2。现在UART1配置为retarget端口,它运作良好,我也发现它使用了低电平的HW功能,但不是适配器。因此,我将UART2配为retarget_init()代码配置。关于使用UART适配器,我如何学会使用它?
古兴,
您可以检查如何在UM-B-044用户手册中使用适配器:DA1468X软件平台参考,您还可以找到关于适配器的信息和DOXYGEN中的可用功能(在SDK转到DOC文件夹中搜索索引HTML),您将找到如何使用适配器的所有可用功能以及SDK演示中有示例。如果您想使用两个UART,我建议使用适配器进行应用中的使用。
谢谢mt_dialog.