STM32用中断控制LED小灯的亮灭

发布者:温馨阳光最新更新时间:2018-07-21 来源: eefocus关键字:STM32  中断控制  LED小灯 手机看文章 扫描二维码
随时随地手机看文章

STM32f103最小系统板 


PC13 接一个LED小灯




首先配置LED灯


void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

//初始化PC13为推挽式输出

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

然后配置按键键盘为上拉式输入和配置EXTI函数


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_Pin_10;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOB, &GPIO_InitStructure);

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

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource10);

//配置EXTI_LINE10中断触发模式

 

EXTI_InitStructure.EXTI_Line = EXTI_Line10;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

 

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_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}




void EXTI15_10_IRQHandler(void)

{

if(EXTI_GetFlagStatus(EXTI_Line10) == 1)     //判断哪个按键输入

 

{

LED = 0;

EXTI_ClearFlag(EXTI_Line10);

}

 

if(EXTI_GetFlagStatus(EXTI_Line11) == 1)     //判断哪个按键输入

{

LED = 1;

EXTI_ClearFlag(EXTI_Line11);

}

}

 


在主函数里初始化LED EXTI函数


int main(void)

{

NVIC_Configuration();

LED_Init();

EXTI_KEY_Init();

delay_init();

while(1)

{

}

}

关键字:STM32  中断控制  LED小灯 引用地址:STM32用中断控制LED小灯的亮灭

上一篇:STM32_外部中断之按键控制点亮LED灯
下一篇:STM32通过按键中断点亮led灯

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

STM32系统学习——SPI(读写串行 FLASH)
一、SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。 可与 I2C 章节对比阅读,体会两种通讯总线的差异以及 EEPROM 存储器与 FLASH 存储 器的区别。 1、物理层 SPI通讯使用 3 条总线及片选线,3条总线分别为 SCK、MOSI、MISO,片选线为 SS,它们的作用介绍如下: (1) SS( Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、CS,以下用 NS
[单片机]
<font color='red'>STM32</font>系统学习——SPI(读写串行 FLASH)
“IIC与E2PROM通信实验”详解
IIC工作逻辑图 IIC中事件标志 从发送器 在接收到地址和清除ADDR位后,从发送器将字节从DR寄存器经由内部移位寄存器发送到SDA 线上。 说明:S=Start(起始条件),Sr=重复的起始条件,P=Stop(停止条件),A=响应,NA=非响应, EVx=事件(ITEVFEN=1时产生中断) ① EV1和EV3-1拉长了SCL低电平时间,也就是说如果我们不清除这两个事件的标志位,那么从发送器是不会发送信息的,如果我们不清除这两个事件,那么SCL上的电平会被无限拉低,这导致信息发送不出去; ② AF位不用手动清除也是可以的,AF标志一旦出现说明我们的IIC传输已经结束,IIC传输再次使能建立时,AF位可
[单片机]
“IIC与E2PROM通信实验”详解
如何开发与位置无关的 STM32 完整工程
1、前言 最近有客户询问,能否使用 STM32CubeIDE 在编译时通过设置某个编译选项,让STM32 应用与存储位置无关。这样的优势是能使同一个固件被烧在 STM32 Flash 里的不同位置, 而在系统 Bootloader 里只需要跳到相应的位置就可以正常执行固件代码。客户希望STM32 代码从 Flash 里执行,不复制到 RAM 里;客户希望是一个完整的映像,而不仅仅是其中某个函数做到了位置无关。 2、分析 在嵌入式场景下,不一定有操作系统。即使有操作系统,一般也是 RTOS。一般 RTOS没有一个通用的程序加载器。因此,存储位置无关的需求,在这时可以说无关紧要。但是,如果客户需要进行在线固件更新,例如 IoT 应
[单片机]
如何开发与位置无关的 <font color='red'>STM32</font> 完整工程
FPGA和STM32的区别是什么 stm32与fpga的优缺点分析
FPGA基本原理和内部结构 一、FPGA原理 FPGA中的基本逻辑单元是CLB模块,一个CLB模块一般包含若干个基本的查找表、寄存器和多路选择器资源,因此FPGA中的逻辑表达式基于LUT的。 FPGA内部的编程信息一般存储在SRAM单元中,因此通常的FPGA都是基于SRAM的,所以掉电后信息会丢失,下次上电需要先配置才能使用。 着重介绍Xilinx FPGA, 二、FPGA产品的速度等级 速度等级一般反映一款芯片的性能,速度等级越高,说明芯片内的逻辑延时和布线延时越小,设计的性能要求也越容易达到,随之付出的成本也越大。 对Xilinx FPGA,速度等级一般有“-1”、“-2”、“-3”等,数字越大,速度等级越高,芯片价钱
[单片机]
FPGA和<font color='red'>STM32</font>的区别是什么 <font color='red'>stm32</font>与fpga的优缺点分析
STM32开发笔记94: 忽略PlatformIO中的特定警告
单片机型号:STM32F091RCT6 尝试在PlatformIO中使用STM32Cube进行项目的开发工作,第1次编译,即出现如下图的警告。 该警告在GCC中有详尽的解释: Allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For C (and C++), this activates optimizations based on the type of expressions. In particular, an object of one type is ass
[单片机]
<font color='red'>STM32</font>开发笔记94: 忽略PlatformIO中的特定警告
STM32的启动过程是怎么样的?
分享这篇文章,谈一下STM32启动流程。如果读者朋友已经有过汇编相关基础,能够够好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。 STM32三种启动模式 下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。三种启动模式如下: 从主闪存存储器启动,将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。主闪存存储器是STM32内置的Flash,作为芯片内
[单片机]
<font color='red'>STM32</font>的启动过程是怎么样的?
STM32的地址分配
一.存储器组织 注:每一个外设都对应一个寄存器组,如定时器TIM2对应的寄存器地址为0x40000000~0x400003FF. 二.嵌入的SRAM以及嵌入的闪存 1.嵌入的SRAM可以以字节,半字,全字访问,这里SRAM的起始地址为0x20000000. 2.闪存存储器有主存储块和信息块组成。 注:有关闪存寄存器的详细信息,请参考《STM32F10xxx闪存编程手册》。
[单片机]
STM32单片机中断详解
中断,在单片机中占有非常重要的地位。代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转。而在单片机执行代码的过程中,难免会有一些突发的情况需要处理,这样就会打断当前的代码,待处理完突发情况之后,程序会回到被打断的地方继续执行。 1 EXTI控制器 外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。 外部信号进入经过1的边沿检测电路,检测是否符合(有2和3的上升沿和下降沿选择寄存器决定),产生信号,然后和4软件
[单片机]
<font color='red'>STM32</font>单片机<font color='red'>中断</font>详解
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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