一、串口通訊參數修改
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);
}