震动传感器

发生震动的时候是低电平状态;
不发生震动的时候是高电平状态
所以
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);//初始化
}

中断函数的配置

  1. 准备工作
    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中断控制器的抢占优先级
  1. 初始化配置用来中断的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);
  1. 初始化配置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);
  1. 配置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);
  1. 在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利用外部中断控制小台灯相关推荐

  1. STM32的“外部中断”和“事件”区别和理解

    凡从事过ST MCU应用开发的人往往会遇到事件.中断事件 中断三个概念或术语.这三个概念彼此关联,有时会让人有点混淆或犯迷糊. 先拿一件生活中的事情打比方对上述三个概念做个基本的粗略理解,之后再分享一 ...

  2. STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯

    基于上篇我们已经基本了解了软件界面和如何创建一个项目了 接着我们看如何利用外部按键来控制LED灯的亮灭,即外部中断. (本文讲述的是外部中断控制led取反以及如何实现流水灯) (如果想了解外部中断如何 ...

  3. 第四讲:1.定时、延时任务控制小台灯打开/关闭

    导读: 这期主要讲物联网管理平台中的任务管理--定时和延时.利用这两个任务控制小台灯打开/关闭. 01定时 找到"任务控制",点击然后弹出对话框,在对话框中我们可看到定时这词(如下 ...

  4. 51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零

    51单片机:利用外部中断实现按键按一下数码管数字加1直到加到99,另一个按键实现清零 题目要求: 利用外部中断实现按键按一下数码管数字加1,实现00-99的循环,另一个按键实现清零,不管数码管数字是多 ...

  5. 利用外部中断实现清零_大工13春《嵌入式原理与开发》辅导资料十三

    大工13春<嵌入式原理与开发>辅导资料十三 2013-08-29 07:08:34 905 有学员问关于大工13春<嵌入式原理与开发>辅导资料十三的题目的参考答案和解析,具体如 ...

  6. Arduino UNO利用外部中断测量RC接收器PPM脉宽

    Arduino UNO利用外部中断测量RC接收器PPM脉宽 PPM信号 PPM信号是将多个控制通道(一般10个控制通道)集中放在一起调制的信号.也就是一个PPM脉冲序列里面包含了多个通道的信息.如下图 ...

  7. STM32—EXTI外部中断

    文章目录 一.思路步骤(看懂这张图) 1. 打开RCC时钟树 2.配置GPIO(三种模式) 3.配置AFIO中断引脚选择 4.打开EXTI 5.配置NVIC(先选择组在初始化NVIC) 6.自己书写中 ...

  8. STM32单片机外部中断配置讲解

    2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平.低电平).边沿变化(上升沿. ...

  9. [stm32] Start Tour-利用外部中断控制LED亮灭

    如果觉得不错就点个赞吧~ 目录 一  元件相关 二 面包板上的连线 三 具体代码 传感器驱动代码(跟独立按键那个差不多) 中断函数代码(外部中断) main.c 四  最终效果 效果图: 一  元件相 ...

最新文章

  1. Android 多线程-----AsyncTask详解
  2. Qt安装及配置_很详细(附下载网址)
  3. ALTERA产品型号命名
  4. 基于LZ77算法的文件压缩收尾
  5. S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
  6. C++ 继承关系图 01
  7. 【RabbitMQ】6、rabbitmq生产者的消息确认
  8. mysql navicat安装_MySQL与Navicat的安装及使用教程
  9. 什么叫补仓,什么是补仓
  10. Oracle Database Gateway 安装
  11. MySQL 浅谈NOT NULL和DEFAULT的关系
  12. 安装phantomjs、使用phantomjs以及时遇到问题时的解决方法
  13. springboot办公用品采购领用管理系统java
  14. 平面设计是做什么的?平面设计工作内容有哪些?
  15. Gimp 替换白色背景
  16. Flink SQL xxx is not serializable. The object probably contains or references non serializable field
  17. C语言初阶:进制,计算机的美丽语言
  18. 数博会金蝶揭秘智能零售:名企转型底气
  19. 通道剪枝Channel Pruning
  20. STM32F407ZG 检测环境温度 CubeIDE

热门文章

  1. [年终总结] 2023,希望一切都能够好起来
  2. 论文投稿时图片上传失败:File ‘XXX‘ not found on input line XXX
  3. 为特斯拉车主构思设计的一款刹车踩踏数据监测器
  4. 菱形继承中构造函数调用问题
  5. java学习——JDK安装
  6. 编译tensorflow遇见JVM out错误
  7. python夯实基础日记-字典、集合、分支、循环
  8. python红楼梦词频统计
  9. js 解决移动端苹果自带输入法的连续输入多打重复字的问题
  10. 经典升级,长直播,马上开课 | 第 20 期高级转录组分析和R数据可视化火热报名中!!!...