【平头哥RVB2601创意应用开发】配置串口1 UART1输出
[复制链接]
项目中要用到串口输入输出,翻了下论坛竟然没有一篇写配置串口1的,只能自己写了。
仅仅写个测试程序,能让串口1输出数据就行。
根据原理图
PA28是串口一的TX
现在写个程序,让串口一输出数据,CDK的串口接收并显示在串口助手中。
实物这样接线,拔掉跳线帽之后,串口就不能接收到日志信息了。
在board_yoc_init初始化函数中增加串口1的初始化函数。
void board_yoc_init(void)
{
board_init();
event_service_init(NULL);
console_init(CONSOLE_UART_IDX, 115200, 512);
uart1_init();
ulog_init();
aos_set_log_level(AOS_LL_DEBUG);
int ret = partition_init();
if (ret <= 0) {
LOGE(TAG, "partition init failed");
} else {
LOGI(TAG, "find %d partitions", ret);
}
aos_kv_init("kv");
snd_card_alkaid_register(NULL);
network_init();
board_cli_init();
}
仿照串口0的函数,增加的串口1的初始化函数
void uart1_init(void)
{
int rc;
csi_pin_set_mux(PA28, PA28_UART1_TX);
csi_pin_set_mux(PA27, PA27_UART1_RX);
aos_mutex_new(&g_console_mutex_handle1);
_uart1.port = TEST_USART_IDX;
_uart1.config.baud_rate = 115200;
_uart1.config.mode = MODE_TX_RX;
_uart1.config.flow_control = FLOW_CONTROL_DISABLED;
_uart1.config.stop_bits = STOP_BITS_1;
_uart1.config.parity = NO_PARITY;
_uart1.config.data_width = DATA_WIDTH_8BIT;
rc = hal_uart_init(&_uart1);
if (rc == 0) {
g_console_handle1 = &_uart1;
g_console_buf_size1 = 512;
}
}
在main函数中增加一个任务,定时调用串口1发送函数
void uart1_send_data(void)
{
hal_uart_send(&_uart1, "ssk\r\n", 5, AOS_WAIT_FOREVER);
LOGD(TAG, "Send at cmd1 ok\r\n");
}
实现了定时从串口1打印数据,串口1的TX直接接到了CP2012的RX脚,因此会在串口窗口中显示。
仅仅一个小测试,代码写的不是很严谨,仅供有需要使用串口1的同学参考。
|