stm32利用外部中断控制小台灯
震动传感器
发生震动的时候是低电平状态;
不发生震动的时候是高电平状态
所以
IO口的输入模式选择 下拉输入
来监测是否受到的震动
#include "shakeLight.h"
#include "stm32f10x.h"void shakeLight_demo(void)
{GPIO_InitTypeDef shakeLight;//GPIO口的结构体设置RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//APB2总线下的GPIOA口的使能shakeLight.GPIO_Mode=GPIO_Mode_IPD;//设置为下拉输入模式shakeLight.GPIO_Pin=GPIO_Pin_1;//因为震动器连接了Pin_1口,进行配置shakeLight.GPIO_Speed=GPIO_Speed_10MHz;//频率GPIO_Init(GPIOA,&shakeLight);//初始化}
继电器
低电平 ---- 接通 GPIO_ResetBits
高电平 ---- 断开
#include "jidianqi.h"
#include "stm32f10x.h"void jidianqi_demo(void)
{GPIO_InitTypeDef jidianqi;//GPIO口的结构体设置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//APB2总线下的GPIOA口的使能jidianqi.GPIO_Mode= GPIO_Mode_Out_PP;//设置推挽输出jidianqi.GPIO_Pin= GPIO_Pin_3;//因为震动器连接了Pin_3口,进行配置jidianqi.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA, &jidianqi);//初始化
}
中断函数的配置
- 准备工作
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能要用的GPIO口RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//启动GPIO口的复用功能;使能‘AFIO’模式GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);//配置GPIOA中的GPIO1口为外部中断源NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置NVIC中断控制器的抢占优先级
- 初始化配置用来中断的GPIO口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);shakeLight.GPIO_Mode=GPIO_Mode_IPD;shakeLight.GPIO_Pin=GPIO_Pin_1;shakeLight.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,&shakeLight);
- 初始化配置EXIT外部中断
exti_init.EXTI_Line =EXTI_Line1;//因为使用GPIO1口,所以使用外部中断线LINE1exti_init.EXTI_Mode =EXTI_Mode_Interrupt;//中断模式exti_init.EXTI_Trigger =EXTI_Trigger_Falling;//震动时从高电平跳到低电平,所以采用下降沿触发exti_init.EXTI_LineCmd =ENABLE;//使能
EXTI_Init(&exti_init);
- 配置NVIC中断控制器;控制优先级的
nvic_init.NVIC_IRQChannel=EXTI1_IRQn;//使用了GPIO1口,先用EXTI1中断通道了nvic_init.NVIC_IRQChannelCmd=ENABLE;//使能nvic_init.NVIC_IRQChannelPreemptionPriority=1;//优先级为1nvic_init.NVIC_IRQChannelSubPriority =1;//优先级为1
NVIC_Init(&nvic_init);
在MIAN.C函数里编写中断服务函数
EXTI_GetFlagStatus是中断标志函数,标志位为**‘RESET’**;
如果外部中断的标志位不是等于RESET就是产生了中断EXTI_ClearFlag是清除中断标志函数;如果执行不清除,中断标志会一直存在;中断反复执行
void EXTI1_IRQHandler(void)//使用EXTI1中断通道的中断函数
{if(EXTI_GetFlagStatus(EXTI_Line1) != RESET){GPIO_ResetBits(GPIOA, GPIO_Pin_3);//给继电器低电平,开灯delay(2000);GPIO_SetBits(GPIOA, GPIO_Pin_3); //给继电器高电平,关灯}EXTI_ClearFlag(EXTI_Line1);//清除中断标志函数;如果不清除,中断标志会一直存在;中断反复执行}
因为在这个项目中,只用到了一个中断,所以外部中断线暂时先用第一条,中断通道类同;优先级均设为1
stm32利用外部中断控制小台灯相关推荐
- STM32的“外部中断”和“事件”区别和理解
凡从事过ST MCU应用开发的人往往会遇到事件.中断事件 中断三个概念或术语.这三个概念彼此关联,有时会让人有点混淆或犯迷糊. 先拿一件生活中的事情打比方对上述三个概念做个基本的粗略理解,之后再分享一 ...
- STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯
基于上篇我们已经基本了解了软件界面和如何创建一个项目了 接着我们看如何利用外部按键来控制LED灯的亮灭,即外部中断. (本文讲述的是外部中断控制led取反以及如何实现流水灯) (如果想了解外部中断如何 ...
- 第四讲:1.定时、延时任务控制小台灯打开/关闭
导读: 这期主要讲物联网管理平台中的任务管理--定时和延时.利用这两个任务控制小台灯打开/关闭. 01定时 找到"任务控制",点击然后弹出对话框,在对话框中我们可看到定时这词(如下 ...
- 51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零
51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零 题目要求: 利用外部中断实现按键按一下数码管数字加1,实现00-99的循环,另一个按键实现清零,不管数码管数字是多 ...
- 利用外部中断实现清零_大工13春《嵌入式原理与开发》辅导资料十三
大工13春<嵌入式原理与开发>辅导资料十三 2013-08-29 07:08:34 905 有学员问关于大工13春<嵌入式原理与开发>辅导资料十三的题目的参考答案和解析,具体如 ...
- Arduino UNO利用外部中断测量RC接收器PPM脉宽
Arduino UNO利用外部中断测量RC接收器PPM脉宽 PPM信号 PPM信号是将多个控制通道(一般10个控制通道)集中放在一起调制的信号.也就是一个PPM脉冲序列里面包含了多个通道的信息.如下图 ...
- STM32—EXTI外部中断
文章目录 一.思路步骤(看懂这张图) 1. 打开RCC时钟树 2.配置GPIO(三种模式) 3.配置AFIO中断引脚选择 4.打开EXTI 5.配置NVIC(先选择组在初始化NVIC) 6.自己书写中 ...
- STM32单片机外部中断配置讲解
2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平.低电平).边沿变化(上升沿. ...
- [stm32] Start Tour-利用外部中断控制LED亮灭
如果觉得不错就点个赞吧~ 目录 一 元件相关 二 面包板上的连线 三 具体代码 传感器驱动代码(跟独立按键那个差不多) 中断函数代码(外部中断) main.c 四 最终效果 效果图: 一 元件相 ...
最新文章
- Android 多线程-----AsyncTask详解
- Qt安装及配置_很详细(附下载网址)
- ALTERA产品型号命名
- 基于LZ77算法的文件压缩收尾
- S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
- C++ 继承关系图 01
- 【RabbitMQ】6、rabbitmq生产者的消息确认
- mysql navicat安装_MySQL与Navicat的安装及使用教程
- 什么叫补仓,什么是补仓
- Oracle Database Gateway 安装
- MySQL 浅谈NOT NULL和DEFAULT的关系
- 安装phantomjs、使用phantomjs以及时遇到问题时的解决方法
- springboot办公用品采购领用管理系统java
- 平面设计是做什么的?平面设计工作内容有哪些?
- Gimp 替换白色背景
- Flink SQL xxx is not serializable. The object probably contains or references non serializable field
- C语言初阶:进制,计算机的美丽语言
- 数博会金蝶揭秘智能零售:名企转型底气
- 通道剪枝Channel Pruning
- STM32F407ZG 检测环境温度 CubeIDE
热门文章
- [年终总结] 2023,希望一切都能够好起来
- 论文投稿时图片上传失败:File ‘XXX‘ not found on input line XXX
- 为特斯拉车主构思设计的一款刹车踩踏数据监测器
- 菱形继承中构造函数调用问题
- java学习——JDK安装
- 编译tensorflow遇见JVM out错误
- python夯实基础日记-字典、集合、分支、循环
- python红楼梦词频统计
- js 解决移动端苹果自带输入法的连续输入多打重复字的问题
- 经典升级,长直播,马上开课 | 第 20 期高级转录组分析和R数据可视化火热报名中!!!...