串列埠設定的一般步驟可以總結為如下幾個步驟:
串列埠時鐘使能,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...