一个简单的2*8矩阵键盘如图,折腾了一天没搞定,各位有什么建议。
我是如下配置的:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//PC0-PC7,地址、通讯
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | \
GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
//读出开关组1状态
GPIO_SetBits(GPIOC, GPIO_Pin_8);
GPIO_ResetBits(GPIOC, GPIO_Pin_9);
DelayMs(10);
temp= (u8)GPIO_ReadInputData(GPIOC);
//读出开关组2状态
GPIO_ResetBits(GPIOC, GPIO_Pin_8);
GPIO_SetBits(GPIOC, GPIO_Pin_9);
DelayMs(10);
id = (u8)GPIO_ReadInputData(GPIOC) ;
将输入脚全部外部上拉后,只能正确读出一组开关的状态,当另一组开关中的任一个打开后,读出全部为闭合。 |