當2個xq引腳通電時,(電磁感應定律)電磁鐵會產生磁,從而吸附上面的銜鐵向下,下面的ck常開電路導通。
微控制器可以直接驅動2個xq引腳(微控制器輸出的電流較小),也可以借助驅動電路(uln2003或者三極體)來驅動xq引腳,經過uln2003可以輸出較大的電流。
2個xq引腳接在p26端子上,然後連線uln2003,輸出到繼電器j1、j2上。
注意:通過uln2003的電平會取反(輸入為0則輸出為1,輸入為1則輸出為0)
繼電器乙個xq引腳接高電平5v,乙個xq引腳接j1/j2,當j1為低電平時繼電器1導通,j2為低電平時繼電器2導通,並且導通時對應led會點亮。還有三個輸出引腳,對應繼電器上的1a(開關柄),1b(常閉),1c(常開)。
對繼電器的控制變成了對io口電平的控制,輸出高電平(uln2003會翻轉電平輸出低電平)即可開啟繼電器,同理,輸出低電平即關閉繼電器。
注意:本程式所占用的gpio介面pa13、pa14上電後為jtag功能,
需要在rcc程式裡啟動afio時鐘,再在relay_init函式裡加入:
gpio_pinremapconfig(gpio_remap_swj_disable, enable);
// 改變指定管腳的對映,完全禁用jtag+sw-dp才能將jatg介面重定義為gpio
*/#include
"relay.h"
//繼電器的介面初始化
void
relay_init
(void
)//繼電器的控制程式(c=0繼電器放開,c=1繼電器吸合)
void
relay_1
(u8 c)
//繼電器的控制程式(c=0繼電器放開,c=1繼電器吸合)
void
relay_2
(u8 c)
#ifndef __relay_h
#define __relay_h
#include
"sys.h"
#define relayport gpioa
//定義io介面
#define relay1 gpio_pin_14
//定義io介面
#define relay2 gpio_pin_13
//定義io介面
void
relay_init
(void);
//繼電器初始化
void
relay_1
(u8 c)
;//繼電器控制1
void
relay_2
(u8 c)
;//繼電器控制2
#endif
注意:控制繼電器的兩個引腳與jtag復用了,且上電預設為jtag模式,如果需要做gpio使用,則需要將其重對映為gpio,呼叫gpio_pinremapconfig(gpio_remap_swj_disable, enable) STM32F1開發指南筆記10 串列埠通訊
串列埠設定的一般步驟可以總結為如下幾個步驟 串列埠時鐘使能,gpio 時鐘使能 串列埠復位 gpio 埠模式設定 串列埠引數初始化 開啟中斷並且初始化 nvic 如果需要開啟中斷才需要這個步驟 使能串列埠 編寫中斷處理函式 插入換行 usart rx sta 0 else if times 200 ...
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...