STM32F407学习笔记——GPIO_按键控制LED亮灭

发布者:dandan666最新更新时间:2018-07-21 来源: eefocus关键字:STM32F407  GPIO  按键控制  LED亮灭 手机看文章 扫描二维码
随时随地手机看文章


#include

#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这样是有道理的,大型的工程便于管理


关键字:STM32F407  GPIO  按键控制  LED亮灭 引用地址:STM32F407学习笔记——GPIO_按键控制LED亮灭

上一篇:外部中断实现LED灯的控制亮灭
下一篇:STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关

推荐阅读最新更新时间:2024-03-16 16:09

stm32 gpio 工作方式及 mos管的认识
GPIO 寄存器的配置 模式一 开漏输出 CPU 写寄存器来 输出1通过输出控制电路 N-MOS管处于关闭状态,输出电平不受MOS管影响,而受上下拉电阻的影响,所以IO口输出不一定为1; 输出为0,N-MOS管开启,把输出端电平拉低,所以输出为0;CPU读出来的就是0. 模式二-------开漏复用输出 复用是通过 外设 来控制输入输出 其他与开漏输出一样 模式三----------推挽输出 推挽输出:输入1时,上方的 P-MOS 导通,下方的 N-MOS关闭,对外输出高电平; 输入0时,下方的 N-MOS 导通,上方的 P-MOS关闭,对外输出低电平。 模式四------推挽复用输出 复用是通过 外
[单片机]
stm32 <font color='red'>gpio</font> 工作方式及 mos管的认识
STM32——简述GPIO的功能和结构
(1)什么是GPIO GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 (2)基本结构 1.保护二极管 IO引脚上下两边两个二极管用于防止引脚外部过高/过低的电压输入,当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。 2.P-MOS管和N-MOS管 图中红色箭头2方向为输出模式的GPIO,由P-MOS管和N-MOS管组成的单元电路使得GPI
[单片机]
STM32——简述<font color='red'>GPIO</font>的功能和结构
stm32.cube(三)——HAL.GPIO
一、总览 HAL层里的库函数和大家熟悉的stm32lib基本上是一致的。一般来说一个cpu外设的操作函数分成两部分,分别是init和operation。 来看一个cube里的例子: static GPIO_InitTypeDef GPIO_InitStruct; int main(void) { /* This sample code shows how to use GPIO HAL API to toggle LED2 IO in an infinite loop. */ /* STM32F103xB HAL library initialization: - Configure the Flash p
[单片机]
stm32—GPIO操作(库函数)
难得有时间,最近想写一下stm32的入门基础。 GPIO的8种方式 1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 2、带上拉输入GPIO_IPU——IO内部上拉电阻输入 3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入 4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电 5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实
[单片机]
s3c2440硬件篇之一:GPIO
S3C2440共有130个I/O 端口,共分为GPA,GPB,...,GPJ.对于这几组GPIO引脚,他们的寄存器是相似的: GPxCON:用于配置(configure),选择引脚的功能。 GPxDAT:用于读/写数据。 GPxUP:确定是否使用内部上拉电阻。(没有GPAUP寄存器。) PORTB~PORTJ在寄存器操作方面完全相同。GPxCON中每两位控制一根引脚:00表示输入,01表示输出,10表示特殊功能,11保留不用。 一。使用汇编代码点亮一个LED。参照韦东山大哥的,上图是从韦大哥的书中截图的,而我的开发板对应的是GPF接口。仅此区别。 (1)led_on.S汇编代码。 @*******
[单片机]
s3c2440硬件篇之一:<font color='red'>GPIO</font>
[单片机框架][bsp层][cx32l003][bsp_gpio] GPIO配置和使用
GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。过 GPIO 最简单的应用还属点亮 LED灯了,只需通过软件控制 GPIO 输出高低电平即可。当然GPIO还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。 通用输入/输出口用于芯片和外部进行数据传输,共有 4 组 GPIO:GPIOA、GPIOB、GPIOC 和GPIOD。4 组 GPIO 的功能基本相同,可以通过配置将 GPIO 映射到对应芯片引脚,每个引脚可以被独立配置为
[单片机]
如何测量MSP430功耗
众所周知,MSP430以其超低功耗而著称。但是很多用户反应,在实际应用中,测量MSP430的功耗时,测量结果和MSP430数据手册相差甚远。其实这里主要涉及到两方面的内容: 1. 如何使用MSP430合理的设计硬件和软件,使整个应用最大限度的达到低功耗? 2. 如何测量MSP430的功耗? 就如何测量MSP430功耗,我来分享一下我个人的经验。 一、未使用的GPIO的处理 为了使MSP430最大限度的达到低功耗,对于MSP430未使用的GPIO而言,应该将其设置为输出;或者是设置为输入,但是将管脚的电平固定,可以通过外部电路将管脚连接至Vcc或者GND,也可使能内部上下拉电阻,将管脚电平固定。 对于MSP4
[单片机]
如何测量MSP430功耗
关于STM32PB3PB4如何设置成普通GPIO的配置
最近在跑一些STM32的项目,发现自己确实有很多的方面知识没有掌握,很多的细节不知道; 其实作为一个开发人员,在学习开发的过程中要感恩遇到的没一个知识点,技术人员的技术肯定是通过不断的遇到各种不同的问题来提高的。 对于初学习者来说为什么用到PB3和PB4时无法控制输出呢? 下面就这一问题进行分析讲解。 首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些 端口设置为普通I/O口。具体方法如下: 在GPIO_Configuration(); // 配置使用的 GPIO 口: GPIO_PinRemapConfig(GPIO_Re
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved