串列埠通訊暫存器 庫函式配置 例項編寫

2021-10-11 09:17:12 字數 3918 閱讀 9871

常用的串列埠相關暫存器

void

usart_init()

;//串列埠初始化:波特率,資料字長,奇偶校驗,硬體流控以及收發使能

void

usart_cmd()

;//使能串列埠

void

usart_itconfig()

;//使能相關中斷

void

usart_senddata()

;//傳送資料到串列埠,dr

uint16_t usart_receivedata()

;//接受資料,從dr讀取接受到的資料

flagstatus usart_getflagstatus()

;//獲取狀態標誌位

void

usart_clearflag()

;//清除狀態標誌位

itstatus usart_getitstatus()

;//獲取中斷狀態標誌位,若有資料到來則返回一。

void

usart_clearitpendingbit()

;//清除中斷狀態標誌位

;例如我們要判斷讀暫存器是否非空(rxne),操作庫函式的方法是:

usart_getflagstatus

(usart1, usart_flag_rxne)

;我們要判斷傳送是否完成(tc),操作庫函式的方法是:

;

波特率計算方法:

串列埠配置的一般步驟

rcc_apb2periphclockcmd()

;

usart_deinit()

; 這一步不是必須的

gpio_init()

; tx的模式設定為gpio_mode_af_pp

rx的模式設定為浮空輸入( gpio_mode_in_floating)

或帶上拉輸入(gpio_mode_ipu)

usart_init()

;這個函式的第乙個入口引數是指定初始化的串列埠標號,這裡選擇 usart1。

第二個入口引數是乙個 usart_inittypedef 型別的結構體指標,這個結構體指標的成員變數用

來設定串列埠的一些引數。一般的實現格式為:

usart_initstructure.usart_baudrate = bound;

//波特率設定;

usart_initstructure.usart_wordlength = usart_wordlength_8b;

//字長為 8 位資料格式

usart_initstructure.usart_stopbits = usart_stopbits_1;

//乙個停止位

usart_initstructure.usart_parity = usart_parity_no;

//無奇偶校驗位

usart_initstructure.usart_hardwareflowcontrol

= usart_hardwareflowcontrol_none;

//無硬體資料流控制

usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;

//收發模式

usart_init

(usart1,

&usart_initstructure)

;//初始化串列埠

從上面的初始化格式可以看出初始化需要設定的引數為:波特率,字長,停止位,奇偶校驗位,

硬體資料流控制,模式(收,發)。我們可以根據需要設定這些引數。

nvic_init()

;usart_itconfig()

;

usart_cmd()

;

usartx_irqhandler()

;

void

usart_senddata()

;//傳送資料到串列埠,dr

uint16_t usart_receivedata()

;//接受資料,從dr讀取接受到的資料

flagstatus usart_getflagstatus

(usart_typedef* usartx, uint16_t usart_flag)

;void

usart_clearitpendingbit

(usart_typedef* usartx, uint16_t usart_it)

;

usart.h部分**:

#ifndef __uart_h

#define __uart_h

#include

"stm32f10x.h"

void

my_usart_init

(void);

//串列埠、gpio、中斷初始化函式

void

usart1_irqhandler

(void);

//中斷函式

#endif

usart.c部分**:

#include

"usart.h"

void

my_usart_init

(void

)void

usart1_irqhandler

(void

)//中斷函式

}

main.c部分**:

#include

"stm32f10x.h"

#include

"usrt.h"

intmain

(void

)

串列埠暫存器配置

串列埠操作相關庫函式 void usart init 串列埠初始化 波特率,資料字長,奇偶校驗,硬體流控以及收發使能 void usart cmd 使能串列埠 void usart itconfig 使能相關中斷 void usart senddata 傳送資料到串列埠,dr uint16 t us...

串列埠暫存器的相關配置

usart sr狀態暫存器 usart dr資料暫存器 usart brr波特率暫存器 void usart init 串列埠初始化 波特率,資料字長,奇偶校驗,硬體流控以及收發使能 void usart cmd 使能串列埠 void usart itconfig 使能相關中斷 void usart...

STC8 之 串列埠通訊(AUXR暫存器)

這兩天在做stc8板子的串列埠除錯。整理一下前後做的準備和注意事項 要想做通訊,首先要確保pc機的波特率和微控制器的波特率一致。pc端可直接設定。微控制器端就需要採用定時器。這不是乙個簡單的概念。首先微控制器有自己的晶振,可產生振盪週期,即1s內振盪次數。機器週期是12個振盪週期。計時的方法是採用微...