你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
す疯Ⅱ恒す 发表于 2018-2-28 17:21 发帖可以直接贴代码的,会好看很多。 另,矩阵键盘扫描不需要输出一行低电平么?输出前不需要配置为输出模 ...
ruoxing1 发表于 2018-2-28 17:29
す疯Ⅱ恒す 发表于 2018-2-28 17:49 设置了PB0-3为输出低,读PB4-7;如果调换过来的时候,比如想读PB0-3,那也应该先配置为输入才可以读。 ...
查看全部评分
ruoxing1 发表于 2018-2-28 18:17 我刚刚试着改了半天,还是不行,主要我才开始弄stm32,这些理论话我都不咋看的懂,大神能不能说一下我这 ...
另,矩阵键盘扫描不需要输出一行低电平么?输出前不需要配置为输出模式么?STM32与51还是有点区别的,51的不需要配置方向。
第一次发帖不知道能直接贴代码。我图二里的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_ResetBits(GPIOB, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
这一块不就是已经配置了一行低电平和输出模式了吗
设置了PB0-3为输出低,读PB4-7;如果调换过来的时候,比如想读PB0-3,那也应该先配置为输入才可以读。
我刚刚试着改了半天,还是不行,主要我才开始弄stm32,这些理论话我都不咋看的懂,大神能不能说一下我这该怎么改,改成功了,我才能配合着刚刚你说的那些话一起消化理解
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
矩阵扫描的方式你应该懂了,以最简单的方式 ,先让行1输出低电平,行2-4输出高电平;然后后读列1-4的电平,如果有某列是低电平,则对应位置有按键按下,如果没有,则扫下一行(行1,行3-4输出高,行二输出低电平),继续扫描。
但是在STM32中操作的话,如果你想让行1-4的IO口是作为输出的话,那必须是输出状态;如果想读列1-4的状态,则必须是输入状态;如果程序中途你想读行1-4的IO的话,必须中途配置成输入状态。
评分
查看全部评分