STM32按键控制LED(不用固件库)

本文介绍了如何使用STM32F407ZET6微控制器,通过裸机编程的方式来控制LED灯和按键。通过初始化LED和按键的GPIO寄存器,设置它们为输出和输入模式,并在主循环中检测按键状态来控制LED的亮灭。当检测到按键按下时,对应的LED引脚输出低电平,点亮LED。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   用的是STM32F407ZET6。控制的LED灯的四个引脚分别是LED0 ->PF9,LED1 -> PF10,LED2-> PE13,LED3 -> PE14。按键的四个引脚分别是KEY0--> PA0,KEY1--> PE2,KEY2--> PE3,KEY3--> PE4。

    在循环里判断按键是否按下(对应的引脚输入会变为0),如果按下,则对应的LED引脚输出低电平,即可点亮。

    1,分别初始化LED灯和按键的寄存器。

初始化LED灯(设置各个寄存器):设置GPIO的时钟,配置模式寄存器(通用输出类型),配置输出类型(设为输出推免),设置控制输出速率的寄存器,最后配置输出数据寄存器(让LED灯默认是熄灭的)

初始化按键(设置各个寄存器):设置GPIO的时钟,配置密匙寄存器(设置为输入模式),设置控制输出速率的寄存器。

     2,在主函数一直查询按键是否按下(相应的管脚电平是否为0即可)

函数实现如下:

#define rRCCAHB1CLKEN   *((volatile unsigned long *)0x40023830) 
	
#define rGPIOF_MODER  *((volatile unsigned long *)0x40021400)   
#define rGPIOF_OTYPER *((volatile unsigned long *)0x40021404) 
#define rGPIOF_OSPEEDR  *((volatile unsigned long *)0x40021408) 
#define rGPIOF_IDR  *((volatile unsigned long *)0x40021410) 
#define rGPIOF_ODR  *((v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值