我正在使用UART1作为日志记录输出。
由于RAM大小,我必须配置以使用UART1(ROM)。
这是UART1的配置:
// UART配置结构
static const uart_cfg_t uart_cfg = {
//设置波特率
.baud_rate = uart_baudrate_115200,
//设置数据位
.data_bits = uart_databits_8,
//设置奇偶校验
.parity = uart_parity_none,
//设置停止位
.stop_bits = uart_stopbits_1,
//设置流量控制
.auto_flow_control = uart_afce_dis,
//设置FIFO启用
.use_fifo = uart_fifo_en,
//设置TX FIFO触发级别
.tx_fifo_tr_lvl = uart_tx_fifo_level_0,
//设置RX FIFO触发级别
.rx_fifo_tr_lvl = uart_rx_fifo_level_0,
//设置中断优先级
.intr_priority = 2,
#if定义(cfg_uart_dma_support)
//设置UART DMA通道对配置
.uart_dma_channel = uart_dma_channel_01,
//设置UART DMA优先级
.uart_dma_priority = dma_prio_0,
#万一
};
DMA未启用。
当我使用ARCH_PRINTF():
如果最终输出char <= 17,则运行良好。
如果最终输出char> 17,它可以只输出17个ascii char,然后不再发出打印。
我认为它可能与UART的FIFO大小(16)有关,但我看不到ROM代码并分析这个问题。
请帮忙。
设备:
嗨kevinchen_sz,
ROM代码是一个封闭的源,无法查看。你对FIFO大小是正确的。
由于我们无法修改ROM代码,因此您可以实现包装功能以实现日志的所需长度。
您还可以实现自定义例程并绕过ROM中的UART1函数,但这需要更新跳转表并处理寄存器配置。除非绝对必要,否则不推荐。
说过,API本身不会使用大量的RAM空间。您是否使用了任何其他接口的UART2。
如果没有,我会首先尝试使用UART2模块,看看这真的是否使用了RAM。
最好,
lc_dialog.