串列埠設定的一般步驟可以總結為如下幾個:
1) 串列埠時鐘使能, gpio時鐘使能
2) 串列埠復位
3)gpio 埠模式設定
4) 串列埠引數初始化
5) 開啟中斷並且初始化 nvic(如果需要開啟中斷才這個步驟) (如果需要開啟中斷才這個步驟)
6) 使能串列埠 使能串列埠
7) 編寫中斷處理函式
下面,我們就簡單介紹這幾個與串列埠基本配置直接相關的韌體庫函式。這些函式和 定義主要分布在 stm32f10x_usart.h ,stm32f10x_usart.c 檔案中。
1.串列埠時鐘使能。串列埠是掛載在apb2上的,所以使能函式為:
rcc_apb2periphclockcmd(rcc_apb2periph_usart1)
2.串列埠復位。當外設出現異常的時候可以通過復位置 ,實現該外設的復位,然後重新配置這個外設讓其重新工作的目。一般在系統剛開始配置時候,都會先執行復位該這個外 設達到讓其重新工作的目。復位是在函式 usart_deinit()完成:
void usart_deinit(usart_typedef* usartx)
3串列埠引數初始化
void usart_init()函式:
voidusart_init(usart_typedef*usartx,usart_inittypedef*usart_initstruct);
作用:
根據指定引數初始化相應串列埠(波特率,字長,停止位,奇偶校驗,硬體流控制等)
主要是用來初始化暫存器brr以及cr1,cr2,cr3控制暫存器
使用範例:
usart_inittypedefusart_initstructure;
usart_initstructure.usart_baudrate= 9600;//波特率設定;
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);//初始化串列埠
4.void usart_cmd()函式:
原型:
voidusart_cmd(usart_typedef*usartx,functionalstatenewstate);
作用:
使能相應的串列埠,用來設定暫存器cr1的串列埠使能位
使用範例:
usart_cmd(usart1,enable); //使能串列埠1
5.void usart_itconfig()函式:
原型: voidusart_itconfig(usart_typedef*usartx,
uint16_t usart_it, functionalstatenewstate);
作用:開啟串列埠相應中斷,設定串列埠控制暫存器
使用範例:
usart_itconfig(usart1,usart_it_rxne, enable); //開啟讀資料暫存器非空中斷
6.usart_senddata()函式:
原型:
voidusart_senddata(usart_typedef* usartx, uint16_t data);
作用:
傳送資料到串列埠。
使用範例:
usart_senddata(usart1,0x12);
7.uint16_tusart_receivedata()函式:
原型: uint16_t usart_receivedata(usart_typedef*usartx)
獲取串列埠最新接受的值。
使用範例:
usart_receivedata(usart1);
flagstatususart_getflagstatus(usart_typedef*usartx,uint16_t usart_flag);
void usart_clearflag(usart_typedef*usartx,uint16_t usart_flag);
itstatususart_getitstatus(usart_typedef*usartx,uint16_t usart_it);
void usart_clearitpendingbit(usart_typedef*usartx,uint16_t usart_it);
以下是乙個完整的初始化串列埠函式和乙個中斷服務函式:
//初始化io 串列埠1
//bound:波特率
void uart_init(u32 bound)
void usart1_irqhandler(void) //串列埠1中斷服務程式
else //還沒收到0x0d
}}
}
#ifdef os_ticks_per_sec//如果時鐘節拍數定義了,說明要使用ucosii了.
osintexit();
#endif
}
STM32串列埠的設定和庫函式的介紹
串列埠設定的一般步驟可以總結為如下幾個 1 串列埠時鐘使能,gpio時鐘使能 2 串列埠復位 3 gpio 埠模式設定 4 串列埠引數初始化 5 開啟中斷並且初始化 nvic 如果需要開啟中斷才這個步驟 如果需要開啟中斷才這個步驟 6 使能串列埠 使能串列埠 7 編寫中斷處理函式 下面,我們就簡單介...
STM32串列埠設定
串列埠時鐘使能,gpio時鐘使能 串列埠復位 gpio埠模式設定 串列埠引數初始化 開啟中斷並且初始化nvic 需要開啟中斷才需要這個步驟 使能串列埠 編寫中斷處理程式 串列埠是掛載在apb2下面的外設,所以使能函式如下 rcc apb2periphclockcmd rcc apb2perip us...
stm32串列埠通訊
通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...