STM32F1開發指南筆記10 串列埠通訊

2021-10-04 19:30:45 字數 2784 閱讀 4519

串列埠設定的一般步驟可以總結為如下幾個步驟:

串列埠時鐘使能,gpio 時鐘使能

串列埠復位

gpio 埠模式設定

串列埠引數初始化

開啟中斷並且初始化 nvic(如果需要開啟中斷才需要這個步驟)

使能串列埠

編寫中斷處理函式

//插入換行

usart_rx_sta=0;

}else

if(times%

200==0)

printf

("請輸入資料,以回車鍵結束\n");

if(times%

30==

0)led0=

!led0;

//閃爍led,提示系統正在執行.

delay_ms(10

);}}

}

#include

"sys.h"

#include

"usart.h"

////加入以下**,支援printf函式,而不需要選擇use microlib

#if 1

#pragma import(__use_no_semihosting)

//標準庫需要的支援函式

struct __file

; file __stdout;

//定義_sys_exit()以避免使用半主機模式

void

_sys_exit

(int x)

//重定義fputc函式

intfputc

(int ch, file *f)

#endif

/#if en_usart1_rx

//如果使能了接收

//串列埠1中斷服務程式

//注意,讀取usartx->sr能避免莫名其妙的錯誤

u8 usart_rx_buf[usart_rec_len]

;//接收緩衝,最大usart_rec_len個位元組.

//接收狀態

//bit15, 接收完成標誌

//bit14, 接收到0x0d

//bit13~0, 接收到的有效位元組數目

u16 usart_rx_sta=0;

//接收狀態標記

void

uart_init

(u32 bound)

void

usart1_irqhandler

(void

)//串列埠1中斷服務程式

else

//還沒收到0x0d}}

}}#endif

#ifndef __usart_h

#define __usart_h

#include

"stdio.h"

#include

"sys.h"

//如果想串列埠中斷接收,請不要注釋以下巨集定義

#define usart_rec_len 200

//定義最大接收位元組數 200

#define en_usart1_rx 1

//使能(1)/禁止(0)串列埠1接收

extern u8 usart_rx_buf[usart_rec_len]

;//接收緩衝,最大usart_rec_len個位元組.末位元組為換行符

extern u16 usart_rx_sta;

//接收狀態標記

注意:勾選傳送新行才能傳送出去,因為新行就是回車換行(0x0a,0x0d),微控制器接收到回車換行才算接收完成,然後再傳送陣列裡的內容給電腦。

STM32F1開發指南筆記25 繼電器

當2個xq引腳通電時,電磁感應定律 電磁鐵會產生磁,從而吸附上面的銜鐵向下,下面的ck常開電路導通。微控制器可以直接驅動2個xq引腳 微控制器輸出的電流較小 也可以借助驅動電路 uln2003或者三極體 來驅動xq引腳,經過uln2003可以輸出較大的電流。2個xq引腳接在p26端子上,然後連線ul...

STM32F1開發指南筆記37 紅外遙控器

本章,介紹如何通過stm32來解碼紅外遙控器的訊號。戰艦stmf103標配了紅外置收頭和乙個很小巧的紅外遙控器。在本章中,將利用stm32f1的輸入捕獲功能,解碼開發板標配的這個紅外遙控器的編碼訊號,並將解碼後的鍵值在tftlcd模組上顯示出來。紅外遙控是一種無線 非接觸摸制技術,具有抗干擾能力強,...

STM32f1學習筆記 GPIO

參考文章 stm32自學筆記 stm32可以提供很多gpio,一般分別在5個埠 port gpioa gpioe 每個埠有16個gpio,最大耐壓值為5v。每個埠有32為寬頻的設定暫存器,一共64位,每個gpio占用4位配置位。其中兩位設定gpio的方向,另外兩位設定gpio的工作模式。1 gpio...