Rtthread學習筆記(六)串口設備使用示例--波特率等通訊參數修改

一、串口通訊參數修改

1.直接使用rt配置

按照官方網站嘗試着修改了一下串口2的波特率等參數,結果怪自己少添加一個頭文件,一直查下面的錯誤,毫無頭緒,然後發現需要包含#include <rtdevice.h>這個頭文件,解決問題。

在這裏插入圖片描述

#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 <rtdevice.h>,出現了error: variable ‘config’ has initializer but incomplete type這樣的錯誤,添加上#include <rtdevice.h>就全步解決了。
在這裏插入圖片描述在這裏插入圖片描述

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);
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章