KEY_UP:GPIOA GPIO_Pin0 引脚 KEY_LEFT:GPIOE GPIO_Pin2 引脚 KEY_RIGHT:GPIOE_GPIO_Pin4 引脚 KEY_DOWN:GPIOE_GPIO_Pin3 引脚 二、按键GPIO初始化 按键KEY_UP 和其它三个按键的接法不同,需要不同的配置方式。 其中KEY_UP 按下后接高电平,在默认情况下需要置低,初始化时设置为输入下拉,代码如下: // ...
按键KEY_UP 和其它三个按键的接法不同,需要不同的配置方式。 其中 KEY_UP 按下后接高电平,在默认情况下需要置低,初始化时设置为输入下拉,代码如下: // 开启GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 设置上引脚GPIO_InitStructure.GPIO_Pin=KEY_UP_PIN;// 设置输入下拉模式GPIO...
4个按键:KEY_UP、K1、K2、K3 硬件连接原理图如下,注意K1、K2、K3是低电平有效的,而KEY_UP是高电平有效,并且外部都没有上下拉电阻,所以需要在STM32F1内部设置上下拉; STM32F103芯片单个IO口最大输出电流是25mA,而蜂鸣器的驱动电流是30mA左右,整个芯片的输出电流最大为150mA,如果在蜂鸣器上就消耗30mA,那么芯片的...
按键KEY_UP接在GPIOA端口上,其他按键连接在GPIOE上;LED接在GPIOC上。其中KEY_UP通过电阻连接到3.3v,连接到PA0口,其具有一个唤醒的功能,连接高电平有效。要判断是否按下,看其是不是高电平。初始化时设置为下拉输入。而其他按键,判断按下是看其是不是低电平,初始化时设置为上拉输入。要实现的功能:使能...
KEY0,KEY1,KEY2按下,单片机输入检测到0( KEY0=0;KEY1=0;KEY2=0; ),则按键被按下,所以没有按下时,IO口要设置成上拉模式。 KEY_UP按下,单片机检测到高电平1( KEY_UP =1;),则按键被按下,所以没有按下时,IO口要设置成下拉模式。 读取IO口输入模式的三种方式如下: ...
* 1:KEY_RIGHT按下 2:KEY_DOWN按下 * 3:KEY_LEFT按下 4:KEY_UP按下 ***/uint8_tKEY_Scan(uint8_t mode){static uint8_t key=1;//按键松开标志if(mode==1){//支持连按key=1;}if(key&&(KEY_UP==1||KEY_DOWN==0||KEY_LEFT==0||KEY_RIGHT==0)){HAL_Delay(10);//按键消抖key=0;...
KEY_UP控制波形的更新和暂停。 KEY_1降低采样率。 KEY_0提高采样率。 三、信号的采集 信号的采集主要是依靠ADC(通过定时器触发采样,与在定时器中断中开启一次采样的效果类似,以此来控制采样的间隔时间相同),然后通过DMA将所采集的数据从ADC的DR寄存器转移到一个变量中,此时完成一次采样。
if (key_up_value == 1) { led_lightn(0); EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志位 return; } } } /** * @brief 外部中断2中断服务函数 */ void EXTI2_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line2) != RESET) { ...
key_up=0; 接着判断哪个按键按下,返回按键按下的值。5.此时如果你还按着按键,也不会有作用了。if(key_flag==1 &&(KEY0==0||KEY1==0||WK_UP==1)) 因为此时key_up=0; if语句不成立了。6.当你一松开手,马上进入 else if(KEY0==1&&KEY1==1&&WK_UP==0) {key_up=1;} 当 按键都没有按...
这里按键的松手检测也比较简单粗暴,用一个while死循环等待松手。比如WK UP被按下后,其引脚会一直保持高电平,也就是PAin(0)一直等于1,此时用一个while (PAin(1));来等待松手,做松手检测。 四、按键控制LED 这里做一个小练习,用普中核心板上的按键KEY0和KEY1来控制LED1的亮灭。步骤如下...