Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改

一、串口通讯参数修改

1.直接使用rt配置

按照官方网站尝试着修改了一下串口2的波特率等参数,结果怪自己少添加一个头文件,一直查下面的错误,毫无头绪,然后发现需要包含#include 这个头文件,解决问题。

Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改_第1张图片

#define SAMPLE_UART_NAME       "uart2"    /* 串口设备名称 */
static rt_device_t serial;                /* 串口设备句柄 */
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;  /* 初始化配置参数 */

/* step1:查找串口设备 */
serial = rt_device_find(SAMPLE_UART_NAME);

/* step2:修改串口配置参数 */
config.baud_rate = BAUD_RATE_9600;        //修改波特率为 9600
config.data_bits = DATA_BITS_8;           //数据位 8
config.stop_bits = STOP_BITS_1;           //停止位 1
config.bufsz     = 128;                   //修改缓冲区 buff size 为 128
config.parity    = PARITY_NONE;           //无奇偶校验位

/* step3:控制串口设备。通过控制接口传入命令控制字,与控制参数 */
rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config);

/* step4:打开串口设备。以中断接收及轮询发送模式打开串口设备 */
rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);

按照官方的指导,其实很简单,在串口设备开启前,配置相关参数即可,结果就是因为少包含了#include ,出现了error: variable ‘config’ has initializer but incomplete type这样的错误,添加上#include 就全步解决了。
Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改_第2张图片Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改_第3张图片

2.直接使用HAL库配置

就是因为上面的问题一直没有修改波特率成功,所以就采用最直接的解决方式,在开启open串口设备后调用HAL库重新初始化硬件参数,也是能用的,不方便的地方就是不能配置缓冲区尺寸,只能使用默认尺寸了。

UART_HandleTypeDef huart2;

static void MX_USART2_UART_Init(void)
{

  huart2.Instance = USART2;
  huart2.Init.BaudRate = 9600;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  HAL_UART_Init(&huart2);
}

Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改_第4张图片

你可能感兴趣的:(RT-Thread,stm32)