STM32控制矩陣按鍵,HAL庫,cubeMX配置
前言
我使用的是STM32F103RCT6這款單片機(jī),HAL庫,使用cubeMX配置。
使用矩陣按鍵實(shí)現(xiàn)功能的方法為輪詢法
cubeMX中的配置·
1.首先矩陣鍵盤原理圖如下:
2.實(shí)物圖
按照矩陣鍵盤接法,16個(gè)按鍵需要8個(gè)io口,我選擇了PC口的0~7號(hào)引腳,前四個(gè)依次接矩陣鍵盤的行,后四個(gè)依次接矩陣鍵盤的列;矩陣鍵盤的每一個(gè)按鍵都是接了兩個(gè)io口,也就是一端必須是輸出高電平或者低電平,另一端去檢測是否是高電平或者低電平;所以只需要配置行線或者列線為輸出,則另外一端就配置為輸入檢測。
3.cubeMX的配置圖
PC0-PC3配置為推挽輸出低電平:
PC4~PC7配置為輸入模式,上拉:
推挽輸出(英語:Push–pull output)是一種使用一對(duì)選擇性地從相連負(fù)載灌電流或者拉電流的器件的電路。它常常使用一對(duì)參數(shù)相同的功率三極管或MOSFET管,以推挽方式存在于電路中。
**開漏輸出:**開漏輸出就是不輸出電壓,控制輸出低電平時(shí)引腳接地,控制輸出高電平時(shí)引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)。
PA4-PA7配置為外部中斷,下降沿觸發(fā),上拉,之所以這樣配置,是因?yàn)槲覀働A0-PA3配置的是輸出低電平,所以我們需要先上拉,讓他那個(gè)引腳默認(rèn)輸入高電平,只有按下按鍵,兩引腳想通才會(huì)由高電平變?yōu)榈碗娖?,所以我們需要按下按鍵觸發(fā)的話也就是由高到低的時(shí)候,也就是下降沿觸發(fā)。
keil程序中的編寫
首先創(chuàng)建一個(gè)key.c文件和一個(gè)key.h文件
key.c中
GPIO->IDR和0xf7相與, 若是0xe7 則二進(jìn)制位1110 0111,說明PC4變?yōu)榱?,所以第一列的按鍵s1按下
注意PC7對(duì)應(yīng)二進(jìn)制數(shù)中的最高位 PC0對(duì)應(yīng)最低位
后面以此類推
…
注意,可能出現(xiàn)有些行未掃描,有些行的按鍵按下沒有通過串口返回信息
解決方法是,在每一行的掃描之前,將行所對(duì)應(yīng)的引腳清空,如下:
key.h中
測試結(jié)果
結(jié)果顯示正確,成功運(yùn)行
程序代碼鏈接文章來源:http://www.zghlxwxcb.cn/news/detail-415961.html
https://download.csdn.net/download/cubejava/85656823
追求卓越,成功才會(huì)在不經(jīng)意間追上你!文章來源地址http://www.zghlxwxcb.cn/news/detail-415961.html
到了這里,關(guān)于STM32控制矩陣按鍵,HAL庫,cubeMX配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!