#include "stm32f10x.h" #include "led.h" uint8_t key_up=0; int main(void) { LED_GPIO_Config(); //LED 端口初始化 while(1) { if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3)==0&&key_up==0) { Delay(0x200000);//延时去抖 if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3)==0) { if(GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_6)==1) GPIO_ResetBits(GPIOF,GPIO_Pin_6);//GPIOF Pin6输出0 else GPIO_SetBits(GPIOF,GPIO_Pin_6);//GPIOF Pin6输出1 key_up=1; } } } } void Delay(__IO u32 nCount) { for(; nCount != 0; nCount--); }
时间: 2024-02-14 19:32:48 浏览: 73
SDK-include-stdint.h,inttypes.h.zip
这是一段基于STM32F10x芯片的C语言代码,通过读取按钮的状态控制LED的亮灭。代码中的函数包括:
- LED_GPIO_Config():LED 端口初始化;
- GPIO_ReadInputDataBit():读取输入口状态,该函数返回 0 或 1;
- GPIO_ReadOutputDataBit():读取输出口状态,该函数返回 0 或 1;
- GPIO_ResetBits():将输出口置为低电平;
- GPIO_SetBits():将输出口置为高电平;
- Delay():延时函数,用于去抖。
其中,变量 key_up 用于去抖处理,避免按钮被误触发。具体实现过程是:当按钮被按下时,先延时一段时间,然后再检测按钮状态,如果此时按钮仍被按下,则执行相应操作,并将 key_up 置为 1,表示已经处理完毕。如果按钮已经松开,则什么都不做,等待下一次按下。
阅读全文