本帖最后由 lvxinjia123 于 2023-12-27 21:24 编辑
BL616/BL618 共有 2 组 UART,SDK占用了uart0作为控制台输出,接下来用uart1学习一下uart的使用
简单写个收发测试
- #include "bflb_gpio.h"
- #include "board.h"
- #include "bflb_uart.h"
- struct bflb_device_s *gpio;
- struct bflb_device_s *uart1;
- int main(void)
- {
- board_init();
- gpio = bflb_device_get_by_name("gpio");
- uart1 = bflb_device_get_by_name("uart1");
- bflb_gpio_uart_init(gpio, GPIO_PIN_23, GPIO_UART_FUNC_UART1_TX);
- bflb_gpio_uart_init(gpio, GPIO_PIN_24, GPIO_UART_FUNC_UART1_RX);
- struct bflb_uart_config_s cfg;
- cfg.baudrate = 115200;
- cfg.data_bits = UART_DATA_BITS_8;
- cfg.stop_bits = UART_STOP_BITS_1;
- cfg.parity = UART_PARITY_NONE;
- cfg.flow_ctrl = 0;
- bflb_uart_init(uart1, &cfg);
- int ch;
- while (1)
- {
- ch = bflb_uart_getchar(uart1);
- if (ch != -1) {
- bflb_uart_putchar(uart1, ch);
- }
- }
- }
复制代码
了解一下串口配置的各项参数:
cfg.baudrate 串口波特率,不能高于uart_clk/2,串口时钟源可以选择160M/BCLK/XCLK,例程SDK默认选择了XCLK
cfg.data_bits 串口数据位,可选5/6/7/8 bit
cfg.stop_bits 串口停止位,可选择 0.5/1/1.5/2 bit
cfg.parity 串口校验位,可选择奇/偶/无校验
cfg.flow_ctrl 流控制位,可以择无/RTS/CTS/RTS_CTS
用USB转串口工具连好3.3 GND IO23接RX IO24接TX,打开串口调试软件发送任意字符,效果如图
用轮询接收串口消息在实际开发中很少使用,更常用的是串口中断和DMA,下次有时间再试试
|