串列埠使用校驗位

2021-06-17 14:17:03 字數 1273 閱讀 2338

平時都用的8n1的模式,這次使用了校驗位,因此串列埠的初始化工作需要改變

#ifdef rt_using_uart2

usart_initstructure.usart_baudrate = 9600;

usart_initstructure.usart_wordlength = usart_wordlength_9b;

usart_initstructure.usart_stopbits = usart_stopbits_2;

usart_initstructure.usart_parity = usart_parity_even;

usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;

usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;

usart_clockinitstructure.usart_clock = usart_clock_disable;

usart_clockinitstructure.usart_cpol = usart_cpol_low;

usart_clockinitstructure.usart_cpha = usart_cpha_2edge;

usart_clockinitstructure.usart_lastbit = usart_lastbit_disable;

usart_init(usart2, &usart_initstructure);

usart_clockinit(usart2, &usart_clockinitstructure);

/* register uart2 */

rt_hw_serial_register(&uart2_device, "uart2",

rt_device_flag_rdwr | rt_device_flag_int_rx | rt_device_flag_stream,

&uart2);

/* enable usart2 dma rx request */

usart_itconfig(usart2, usart_it_rxne, enable);

#endif

這裡最重要的是

usart_wordlength_9b
這個字段意思是字的長度,沒有校驗位的時候是8位,有了之後要加一位。因此,這不代表資料的長度……真坑

還要多些網友的幫助,詳見

奇偶校驗位

奇偶校驗位 parity bit 或校驗位元 check bit 是乙個表示給定位數的二進位制數中1的個數是奇數還是偶數的二進位制數。奇偶校驗位是最簡單的錯誤檢測檢測碼。奇偶校驗位有兩種型別 偶校驗位與奇校驗位。如果一組給定資料位中1的個數是奇數,那麼偶校驗位就置為1,從而使得1的個數是偶數。如果給...

(2017 2)9位ISBN,求其校驗位

給定乙個9位數字的isbn,求其校驗位。isbn格式為2 02 033598,校驗位的計算方法如下 從左到右依次將各位數字乘10,9,8,2,求出其和s,作模運算得m s mod 11。若11 m在1和9之間,校驗位即為該數字 若11 m等於10,校驗位為x 11 m等於11,校驗位為0。輸出新增校...

IMEI校驗位演算法Luhn

移動裝置國際識別碼 imei international mobile equipment identification number 是區別移動裝置的標誌,具有唯一性,貼在手機背面的標誌上,並且儲存在移動裝置中,可用於監控被竊或無效的移動裝置,它也是該手機在廠家的 檔案 和 身份證號 imei碼由...