发帖
9 1 0

【Ai-M61-32SU入门】学习串口的使用之轮询方式

lvxinjia123
论坛元老

11

主题

37

回帖

3100

积分

论坛元老

积分
3100
小安派&M61基本系统教程 1994 9 2023-12-27 21:19:45
本帖最后由 lvxinjia123 于 2023-12-27 21:24 编辑

BL616/BL618 共有 2 组 UART,SDK占用了uart0作为控制台输出,接下来用uart1学习一下uart的使用
简单写个收发测试

  1. #include "bflb_gpio.h"
  2. #include "board.h"
  3. #include "bflb_uart.h"

  4. struct bflb_device_s *gpio;
  5. struct bflb_device_s *uart1;

  6. int main(void)
  7. {
  8.     board_init();
  9.     gpio = bflb_device_get_by_name("gpio");
  10.     uart1 = bflb_device_get_by_name("uart1");
  11.     bflb_gpio_uart_init(gpio, GPIO_PIN_23, GPIO_UART_FUNC_UART1_TX);
  12.     bflb_gpio_uart_init(gpio, GPIO_PIN_24, GPIO_UART_FUNC_UART1_RX);
  13.     struct bflb_uart_config_s cfg;
  14.     cfg.baudrate = 115200;
  15.     cfg.data_bits = UART_DATA_BITS_8;
  16.     cfg.stop_bits = UART_STOP_BITS_1;
  17.     cfg.parity = UART_PARITY_NONE;
  18.     cfg.flow_ctrl = 0;
  19.     bflb_uart_init(uart1, &cfg);

  20.     int ch;
  21.     while (1)
  22.     {
  23.         ch = bflb_uart_getchar(uart1);
  24.         if (ch != -1) {
  25.             bflb_uart_putchar(uart1, ch);
  26.         }
  27.     }
  28. }
复制代码


了解一下串口配置的各项参数:
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,打开串口调试软件发送任意字符,效果如图
QQ截图20231227203222.png

用轮询接收串口消息在实际开发中很少使用,更常用的是串口中断和DMA,下次有时间再试试

──── 1人觉得很赞 ────

使用道具 举报

2023-12-27 21:45:28
向大佬学习
2023-12-27 22:36:51
学习
2023-12-27 23:11:37
学到了
2023-12-28 08:42:05
点赞
2023-12-28 08:53:25
不错不错
2023-12-28 08:58:34
学习
2023-12-28 09:41:57
学习学习
2023-12-28 13:37:16
赞一个
2024-1-7 22:45:25
👍
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28290 个
  • 话题数: 40269 篇