xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

關(guān)聯(lián)文章https://blog.csdn.net/langdao04/article/details/89705210

資源截圖

代碼片段和文件信息

//#include?“exti.h“
#include?“delay.h“
#include?“l(fā)ed.h“
#include?“keypad.h“

//行列鍵值采用二維數(shù)組方式,根據(jù)需要修改對應(yīng)鍵值;
u32?keyVal[KEY_COL_NUM][KEY_ROW_NUM]?=?
{
//col0
1 //row0
2 //row1
3 //row2

//col1
4 //row0
5 //row1
6 //row2

//col2
7 //row0
8 //row1
9 //row2
};
//行列對應(yīng)硬件IO,采用結(jié)構(gòu)體賦值方式,方便移植;
KeypadGpioStruct?keypadio?=?
{?
{{GPIOC?GPIO_PIN_1}?{GPIOH?GPIO_PIN_2}?{GPIOH?GPIO_PIN_3}}?? //rowNum[KEY_ROW_NUM]
{{GPIOC?GPIO_PIN_4}?{GPIOC?GPIO_PIN_5}?{GPIOC?GPIO_PIN_6}}? //colNum[KEY_COL_NUM]
};

//按鍵初始化函數(shù)?
//PA15和PC5?設(shè)置成輸入
void?KEY_Init(void)
{
????GPIO_InitTypeDef?GPIO_Initure;

????__HAL_RCC_GPIOC_CLK_ENABLE();???????????//開啟GPIOB時(shí)鐘
????__HAL_RCC_GPIOH_CLK_ENABLE();???????????//開啟GPIOB時(shí)鐘

GPIO_Initure.Pin=GPIO_PIN_1;?//PC1
????GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;? //推挽輸出
????GPIO_Initure.Pull=GPIO_PULLUP;??????? //上拉
????GPIO_Initure.Speed=GPIO_SPEED_HIGH; ????//高速
????HAL_GPIO_Init(GPIOC&GPIO_Initure);

GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_3;?//PH2,PH3
????HAL_GPIO_Init(GPIOH&GPIO_Initure);

HAL_GPIO_WritePin(GPIOC?GPIO_PIN_1?GPIO_PIN_SET); //PH7置1?
HAL_GPIO_WritePin(GPIOH?GPIO_PIN_2|GPIO_PIN_3?GPIO_PIN_SET); //PH7置1?


GPIO_Initure.Pin=GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;?//PC4.PC5,PC6
????GPIO_Initure.Mode=GPIO_MODE_INPUT;??? //輸入
????GPIO_Initure.Pull=GPIO_PULLDOWN;????????//下拉 硬件電路有上拉
????HAL_GPIO_Init(GPIOC&GPIO_Initure);


}?
//按鍵處理函數(shù)



int?key_scan(void)
{
static?u8?key_up=1;
u8?keyUpFlag?=?0;
u32?key_num=0;
u8?valValid?=?0;
u8?icol?irow;
GPIO_PinState?val_col[KEY_COL_NUM]?=?{0}; //用于存儲列對應(yīng)IO值(0?or?1)

//配置行輸出為高
for(irow?=?0;?irow? {
HAL_GPIO_WritePin(keypadio.rowNum[irow].GPIOx?keypadio.rowNum[irow].GPIO_Pin?GPIO_PIN_SET); //PH7置1?
}
// HAL_GPIO_WritePin(GPIOC?GPIO_PIN_1?GPIO_PIN_SET); //PH7置1?
// HAL_GPIO_WritePin(GPIOH?GPIO_PIN_2|GPIO_PIN_3?GPIO_PIN_SET); //PH7置1?
delay_us(10);
//依次讀取列對應(yīng)IO值
for(icol?=?0;?icol? {
val_col[icol]?=?HAL_GPIO_ReadPin(keypadio.colNum[icol].GPIOx?keypadio.colNum[icol].GPIO_Pin);
if(key_up?&&?val_col[icol]) //如果確定為當(dāng)前列,則查找哪一行 COL0
{
delay_ms(10); //keyVal
for(irow?=?0;?irow? {
//依次置位行IO為低,如果行讀取為低,則表示為當(dāng)前行
HAL_GPIO_WritePin(keypadio.rowNum[irow].GPIOx?keypadio.rowNum[irow].GPIO_Pin?GPIO_PIN_RESET); //置0
delay_us(10);
if(!HAL_GPIO_ReadPin(keypadio.colNum[icol].GPIOx?keypadio.colNum[icol].GPIO_Pin)) //如果當(dāng)前讀到為0,則表示是此值;
{
key_up?=?0;
key_num?=?keyVal[icol][irow]; //根據(jù)行列值,獲取對應(yīng)鍵值
valValid?=?1; //雞肋
break;
}
}
if(valValid)
break;
}
}
//如果全部為低,則表示按鍵抬起;防止抬起前重復(fù)發(fā)送鍵值
for(icol?=?0;?icol? {
keyUpFlag?|=?val_col[icol];
}
if(!keyUpFlag) //沒有鍵值,則表示抬起
key_up?=?1;

return?key_num;
}
/*************************************************說明**********************

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????3671??2019-04-30?10:33??keypad.c

?????文件???????1014??2019-04-29?17:29??keypad.h

-----------?---------??----------?-----??----

?????????????????4685????????????????????2


評論

共有 條評論