STM32实验4:按键中断

发布者:MysticalDreamer最新更新时间:2017-09-29 来源: eefocus关键字:STM32  按键中断 手机看文章 扫描二维码
随时随地手机看文章

端口配置

#include "stm32f10x.h"//PA13  PA15void    KEY_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能外设置时钟

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;    //PA15上拉输入
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource15);//将PA15设置为中断输入

    EXTI_InitStructure.EXTI_Line = EXTI_Line15;                 //中断线
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  //中断请求
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//下降沿触发
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;                //使能中断
    EXTI_Init(&EXTI_InitStructure);

    NVIC_Configuration();       //设置中断优先级
    NVIC_InitStructure.NVIC_IRQChannel= EXTI15_10_IRQn; 
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}1234567891011121314151617181920212223242526272829

中断服务函数

void EXTI15_10_IRQHandler(void)
{    if(EXTI_GetITStatus(EXTI_Line15)==1)  //按键是否按下
    {
        LED0=!LED0; 
    }
    EXTI_ClearITPendingBit(EXTI_Line15);//清除中断标识}12345678

主函数

#include "stm32f10x.h"
 int main(void)
 {    SystemInit();            //系统时钟初始化为72M    SYSCLK_FREQ_72MHz  
    delay_init(72);    LED_Init();    KEY_Init();     while(1)
    {
        ;
    }
}123456789101112

知识点 
1.STM32的所有GPIO都可以用作外部中断源的输入端 
2.STM32的中断向量具有两个属性,一个为抢占属性,一个为响应属性,其属性编号越小,表明它的优先级别越高。高抢占优先级可以打断低抢占优先级。当两个中断向量的抢占优先级相同时,如果两个中断同时到达,则先处理响应优先级别高的中断。 
3.NVIC优先级组有5种分配方式。 
4.STM32的所有GPIO都引入到EXTI中断线上。 
5.可以配置成上升沿触发,下降沿触发和双边沿触发三种触发方式。 
6.当GPIO用作EXTI外部中断或者使用重映射功能时,必须开启AFIO,同时也要开启外设时钟。 
7.stm32f10x_it.c文件是专门用来存放中断服务函数的,中断服务函数的名字必须要与启动文件startup_stm32f10x_hd.s中的中断向量表定义一致。 
8.NVIC_InitStructure.NVIC_IRQChannel的值可以在stm32f10x.h中搜寻。


关键字:STM32  按键中断 引用地址:STM32实验4:按键中断

上一篇:STM32的IO口基本操作
下一篇:STM32实验2:IO输入

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

STM32串口协议概念及结构体初始化详解+串口点灯+串口收发
一、串口通信协议简介 物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬件部分。 协议层:协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。其实就是软件部分。 1.RS232标准 2.USB转串口 3.原生的串口到串口 二、初始化结构体解 1.USART初始化结构体 2.同步时钟初始化结构体 3.编程时需要用到的固件库函数 三、串口点灯代码实现 1.USART .C文件 #include bsp_usart.h void USART_Config(void) { GPIO_InitTypeDef GPIO_InitStructure;
[单片机]
<font color='red'>STM32</font>串口协议概念及结构体初始化详解+串口点灯+串口收发
验证STM32是小端存储
最近写STM32程序,用到了共用体,由此,引发了疑问。 比如:将0x12345678存储到一个U32类型的变量里面。大端和小端分别是这样存储的。 大端存储: 低地址 …… 高地址 0x 12 34 56 78 小端存储: 低地址 …… 高地址 0x 78 56 34 121234567 看代码 `#include “stm32f10x.h” struct s { u32 a; u8 b; }; union B { u8 c ; struct s s_1; }; union B BB; int main(void) { BB.s_1.a=0x1
[单片机]
STM32的小开发板的设计
分析一个STM32的小开发板的设计: 先看2D的预览 底面 多个电容来滤波 一个晶振提供时基 就是长这样 这个是提供一个复位电平 原理图里面都是使用的网络标签,在原理图里面只要一个引脚的名字一样,它就是连在一起的。 选择一个便宜的LDO 最小的原理图 俩脚控制IO,LED 围着三组引脚,名字一样就可以 原理图是简单的,接下来看PCB版图的设计,我感觉PCB最难的地方是这个。 先看看这个布局 设计好的样子是这样的,让我一层一层的往回推,学习它的设计 这里是为了好走线,旋转了一下U,45° 这里就可以旋转了 把文档和顶层丝印层都关了 现在的样子就是这样的 在这里看
[单片机]
<font color='red'>STM32</font>的小开发板的设计
STM32的硬件I2C与AT24C16
CubeMX的配置 下面这些是我修改过的地方,只要注意I2C和系统时钟等基础配置即可,不想说太多,以图为言 AT24C64的自制库 AT24C64.c #include AT24C64.h #include i2c.h void AT24CXX_Write(u16 reg_address,u8 data) { static HAL_StatusTypeDef i; i = HAL_I2C_Mem_Write(&hi2c1,AT24CXX_DEV_ADDRESS,reg_address,I2C_MEMADD_SIZE_16BIT,&data,1,100); AT24CXX_DELAY_MS(5);
[单片机]
STM32定时器的应用
一: 定时器简介 1:高级定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕获,PWM互补输出 2:普通定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕获 3:基本定时器计数方式(向上 )、预分频值 1—65532、 二:定时器配置方法步骤: 在配置前我们要添加定时器的库函数 stm32f10x_tim.c 1:配置中断向量表 2:配置定时器时钟 3:配置定时器 4:使能定时器 5:使能中断 三:事例分析(定时中断3) 1:配置中断向量表 void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_Init
[单片机]
stm32之uCGUI移植
声明:本教程是作者学习uCGUI过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。如需转载,请注明出处。 说明 平台: stm32f103zet6 TFTLCD型号: 2.8寸9341控制器 ucgui源码: 3.90a版本 触屏: 不带触屏(后续更新) 操作系统: 不支持 移植教程 一、 准备工作: (一) 源码:准备3.90版本的UCGUI源码 注:如果需要跑GUIDEMO,那么还需准备GUIDEMO源码。 (二) LCD底层驱动:准备LCD屏的底层驱
[单片机]
带有STM32 Nucleo板的旋转编码器
步骤1:安装带有STM32L476软件包的STM32CUBEMX和Keil。 步骤2:为项目创建电子接口 该项目所需的电子组件为:- 1)16x2字母数字LCD 2)STM32L476核板。 3)面包板4)跳线。 5)一台装有Windows的笔记本电脑(6)旋转编码器。 LCD和STM32L476板的连接如下所述:- STM32L476-LCD GND-PIN1 5V-PIN2 NA- 2.2K电阻连接到GND PB10-RS PB11-RW PB2-EN PB12-D4 PB13-D5 PB14-D6 PB15-D7 5V-PIN15 GND-PIN16 旋转编码器和STM32的连接如下 旋转编码器-STM板 电源引脚为3.3
[单片机]
带有<font color='red'>STM32</font> Nucleo板的旋转编码器
使用STM32寄存器点亮LED灯
事先声明哦,我也是最近才开始学32的,不过我会尽可能详细的讲解这些小知识点 我们口中常说的LED灯其实是指LED发光二极管,关于这一点涉及到的知识点,我已经在51单片机教程中提及(同点亮LED灯),故而不再详述。 刚开始接触STM32的时候,觉得他的操作明显区别于51,比如我们点亮一个LED灯,直接控制相应的IO口即可;但32不一样,我们需要先设置时钟控制寄存器 RCC_APB2ENR|=1 4; //一共32位 然后设置它的工作方式,输出速度。 GPIOC_CRL&=~(0x0f (4*i)); //控制第i+1个led GPIOC_CRL|=(3 (4*i)); //3可以表示为0011,然后在它的前面补零,凑
[单片机]
使用<font color='red'>STM32</font>寄存器点亮LED灯
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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