STM32通过按键中断点亮led灯

发布者:Qianfeng最新更新时间:2018-07-21 来源: eefocus关键字:STM32  按键中断  点亮led灯 手机看文章 扫描二维码
随时随地手机看文章

首先是led头文件,其中调用的一些库是原子的我只是借鉴一下 侵删


#ifndef __LED_H

#define __LED_H  

#include "sys.h"

 

#define LED PCout(13) // PA8

 

 

void LED1_Init(void);//³õʼ»¯

 

   

#endif

led的c文件


#include "led.h"

 

 

//初始化PB5和PE5为输出口.并使能这两个口的时钟    

//LED IO初始化

void LED1_Init(void)

{

 

 GPIO_InitTypeDef  GPIO_InitStructure;

 

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PC端口时钟

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //LED0-->PA.8 端口配置

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz

 GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8

 

 GPIO_Init(GPIOC, &GPIO_InitStructure);   //推挽输出 ,IO口速度为50MHz

}

 

之后是中断的头文件


#ifndef _EXTI_H_

#define _EXTI_H_

#include "sys.h"

void EXTI_KEY_Init(void);//³õʼ»¯

           

#endif

中断的c文件


#include "EXTI.h"

 

void EXTI_KEY_Init(void)

{

//配置PB11为下降沿触发

GPIO_InitTypeDef GPIO_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

//配置管脚时钟和复用时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

//配置GPIO口为上拉输入

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;  

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);

//配置GPIO为外部中断模式

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11);

//配置EXTI中断触发模式

 

EXTI_InitStructure.EXTI_Line = EXTI_Line11;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

 

//配置EXTI中断优先等级

NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_Init(&NVIC_InitStructure);

 

 

}





主函数


#include "sys.h"

#include "EXTI.h"

#include "led.h"

#include "KEY.h"

#include "delay.h"

u8 t=0;  

int main(void)

{

delay_init();

 

NVIC_Configuration();

LED1_Init();

EXTI_KEY_Init();

 

while(1)

LED = 1;

}

}

效果图



关键字:STM32  按键中断  点亮led灯 引用地址:STM32通过按键中断点亮led灯

上一篇:STM32用中断控制LED小灯的亮灭
下一篇:外部中断实现LED灯的控制亮灭

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

STM32之CAN通信
使用stm32的CAN通信: 1.初始化, 1) 包括引脚初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
[单片机]
STM32的四种输出模式
1、普通推挽输出(GPIO_Mode_Out_PP): 使用场合:一般用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。 使用方法:直接使用 输出电平:推挽输出的低电平是0V,高电平是3.3V。 2、普通开漏输出(GPIO_Mode_Out_OD): 使用场合:一般用在电平不匹配的场合,如需要输出5V的高电平。 使用方法:就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式, 当输出高组态时,由上拉电阻和电源向外输出5V的电压。 输出电平:在开漏输出模式时,如果输出为0,低电平,则使N_MOS 导通,使输 出接地。若控制输出为1(无法直接输出高电平),则
[单片机]
STM32(Cortex-M3)中的优先级概念
STM32 (Cortex-M3) 中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据
[单片机]
STM32堆栈设置
1.堆和栈大小 定义大小在startup_stm32f2xx.s Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; h Heap Configuration ; o Heap Size (in Bytes) 0x0-0xFFFFFFFF:8 ; /h Heap_Size EQU 0x00000200 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base
[单片机]
<font color='red'>STM32</font>堆栈设置
关于 STM32 SPI 从机模式的问题
网上有很多关于STM32 作为从机来使用 的 问题 主要还是 从机接收数据错误 1 关于主从机的 时钟悬空配置 可以肯定的说 主机与从机的时钟悬空一定要配成一样的 这点STM 的官方手册说的很明白 2 从机的波特率 只与 主机提供的 CLK 信号有关 3 通信失败 或者 数据接收错误 问题就出在从机对SPI 的起始信号的判断上面 当使用TI 模式 NSS 信号由硬件 从机对数据的捕获 就很容易 若没有NSS 信号呢 因为STM32 SPI普通模式 根本就没有对数据的捕获 做什么工作 真的有点糊弄我们 它 只是 当我们把SPI 打开 他就开始进行捕获 而不管SCK 此时是闲置的还是忙的 这就造成
[单片机]
STM32电机方波】记录4——PWM输出配置
PWM生成原理: 通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器TIMx_CCR被用作比较功能,下面把它简称为比较寄存器。 这里直接举例说明定时器的PWM输出工作过程:若配置脉冲计数器TIMx_CNT为向上计数,而重载寄存器TIMx_ARR被配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动下不断累加,当TIMx_CNT的数值X大于N时,会重置TIMx_CNT数值为0重新计数。 而在TIMxCNT计数的同时,TIMxCNT的计数值X会与比较寄存器TIMx_CCR
[单片机]
【<font color='red'>STM32</font>电机方波】记录4——PWM输出配置
嵌入式编程(以STM32为例)中的volatile,const意义及应用场景
__I、 __O 、__IO是什么意思? 这是ST库里面的 宏定义 ,定义如下: #define __I volatile const /*! defines 'read only' permissions */ #define __O volatile /*! defines 'write only' permissions */ #define __IO volatile /*! defines 'read / write' permissions */ 显然,这三个宏定义都是用来替换成 volati
[单片机]
STM32微控制器可连接移动平台子系统
中国,2014年7月1日 ——意法半导体最新推出的专用低压STM32微控制器微助力设计人员克服在为主处理器增加辅助芯片(companion chip)时所面临的挑战。新系列专用低压微控制器与主处理器的数字电源域(digital power domain)相同,例如1.8V电源,同时准许片上外设使用电压更高的电源,例如,3.3V,从而避免了常见的性能与电压之间的矛盾问题。 STM32F038/48/58/78和STM32F318/28/58/78低压辅助微控制器是设计人员提高模块划分灵活性的理想解决方案。当需要模拟电压动态范围很宽或直接连接USB设备时,单片整合1.8V数字电源域和独立模拟电源域具有特别强的优势。 § ST
[单片机]
<font color='red'>STM32</font>微控制器可连接移动平台子系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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