STM32F407学习笔记——GPIO_按键控制LED亮灭
2014-04-19 22:03
465 查看
#include <stm32f4xx.h> #include "stm32f4xx_conf.h" #include "delay.h" GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led const u16 pin_led=GPIO_Pin_1;//引脚 GPIO_TypeDef* io_key=GPIOC; const u16 pin_key=GPIO_Pin_0; void Led_Init() { GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //时钟 GPIO_init_l.GPIO_Pin=GPIO_Pin_1; GPIO_init_l.GPIO_Mode=GPIO_Mode_OUT; GPIO_init_l.GPIO_OType=GPIO_OType_PP; GPIO_init_l.GPIO_Speed=GPIO_Speed_100MHz; GPIO_init_l.GPIO_PuPd=GPIO_PuPd_NOPULL; GPIO_Init(GPIOC,&GPIO_init_l); } void Key_Init() { GPIO_InitTypeDef GPIO_init_k; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); GPIO_init_k.GPIO_Pin=GPIO_Pin_0; GPIO_init_k.GPIO_Mode=GPIO_Mode_IN; GPIO_init_k.GPIO_PuPd=GPIO_PuPd_NOPULL; GPIO_Init(GPIOC,&GPIO_init_k); } void Delay(u32 time) { u32 t=time; while(t--); } int main(void) { u8 flag=0; Key_Init(); Led_Init(); while(1) { if((io_key->IDR&pin_key)==0){ Delay(0xfffff); if((io_key->IDR&pin_key)==0){ if(flag==0){ flag=1; io_led->BSRRL=pin_led;//对寄存器进行操作 BSRRL 低电平 Delay(5000000); } else{ flag=0; io_led->BSRRH=pin_led;//对寄存器进行操作 BSRRH 高电平 Delay(5000000); } } } } }
话说51写这个分分钟就搞定了,不过STM32这样是有道理的,大型的工程便于管理
相关文章推荐
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
- 树莓派 Learning 003 — GPIO 002 输入模式 — 按键控制LED
- 2.STM32中对Key_GPIO_Config()函数的理解(自定义)之轮询控制按键LED
- LPC2124--GPIO按键控制LED灯的闪烁
- 树莓派 Learning 003 — GPIO 003 中断模式 — 按键控制LED
- S3C2440学习之GPIO按键控制LED灯
- jz2440裸板开发之GPIO:用按键控制led
- [置顶] ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
- android 用gpio作为pwm输出控制led背光
- 树莓派通过GPIO口获取温度以及控制LED灯
- 按键控制led驱动
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
- 2.5 16个点阵按键控制8个LED
- 通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0
- ZigBee基础实验——GPIO输出控制实验-控制Led亮灭
- 独立按键控制led灯
- P1口外接8个LED,通过按键控制,实现左右移动的流水灯
- 远程控制通讯——基于树莓派 Python gpiozero 远程控制LED灯并返回控制结果
- 【开发手记三】一步一坑:UART和GPIO协同控制LED
- openwrt 之GPIO之 led 和IO控制