外部中断0(含知识点)

  1 #include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
  2 #include "stm32f10x_gpio.h"
  3 #include "stm32f10x_exti.h"
  4 #include "misc.h"
  5 
  6 /*外部中断配置*/
  7 
  8 
  9 int main(void)
 10 {
 11     /***************************************************************/
 12     
 13         //EXTI_InitTypeDef定义于stm32f10x_exti.h
 14 
 15 
 16     /*GPIO配置*/
 17     //step1:使能
 18     GPIO_InitTypeDef a;
 19     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
 20     //结构体
 21     a.GPIO_Speed=GPIO_Speed_50MHz;
 22     a.GPIO_Pin=GPIO_Pin_5;
 23     //推挽输出
 24     a.GPIO_Mode=GPIO_Mode_Out_PP;
 25     //调用GPIO初始化函数
 26     GPIO_Init(GPIOB,&a);
 27     /***************************************************************/
 28     
 29     
 30     /*
 31     *外部中断配置
 32     *总结:
 33     *1、定义一个结构体
 34     *2、四个内容(选择路线、线路模式、触发方式、使能)
 35     *3、调用一个函数
 36     */
 37 EXTI_InitTypeDef c;
 38     /*
 39     *选择了待使能或失能的外部路线(0——18可选)
 40     */
 41 c.EXTI_Line=EXTI_Line0;//外部路线0
 42 /*
 43     *设置了被使能线路的模式
 44     *设置为事件:EXTI_Mode_Event
 45     *设置为中断:EXTI_Mode_Interrupt
 46     */
 47 c.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
 48 /*
 49     设置了被使能线路的触发边沿
 50     EXTI_Trigger_Falling下降沿为中断请求
 51     EXTI_Trigger_Rising 上升沿为中断请求
 52     EXTI_Trigger_Rising_Falling上升沿和下降沿为中断请求
 53 */
 54 c.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿为中断请求
 55     /*
 56     *用来定义选中线路的新状态
 57     *它可以被设为ENABLE或者DISABLE
 58     */
 59 c.EXTI_LineCmd=ENABLE;//使能
 60     /*外部中断初始化函数
 61     *功能:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器。
 62     *指向结构体EXTI_InitTypeDef的指针
 63     */
 64     EXTI_Init(&c);//指向结构体EXTI_InitTypeDef的指针a
 65 /***************************************************************************/
 66 /*NVIC嵌套向量中断控制器*/
 67 /*
 68 *1
 69 *优先级分组:先占优先级和重优先级
 70 *输入参数:
 71 *NVIC_PriorityGroup_0
 72 *NVIC_PriorityGroup_1
 73 *NVIC_PriorityGroup_2
 74 *NVIC_PriorityGroup_3
 75 *NVIC_PriorityGroup_4
 76 */
 77 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 78     /*
 79 *2、NVIC初始化结构体
 80 */
 81 NVIC_InitTypeDef b;
 82 /*
 83 *中断源
 84 *用于使能或者失能指定的IRQ通道
 85 *参数:
 86 *(详细参数请看最后截图一..............)
 87 */
 88 b.NVIC_IRQChannel = EXTI0_IRQn;//EXTI0_IRQn外部中断线0中断
 89 //抢占优先级
 90 /*
 91 *该参数设置成员NVIC_IRQChannel中的抢占优先级
 92 *(详细参数请看最后截图二..............)
 93 */
 94 b.NVIC_IRQChannelPreemptionPriority = 1;//0 1 2 3 4 
 95 //子优先级
 96 /*
 97 *该参数设置成员NVIC_IRQChannel中的从占优先级
 98 *(详细参数请看最后截图二..............)
 99 */
100 b.NVIC_IRQChannelSubPriority = 1;//0 1 2 3 4 
101 //使能
102 /*
103 *指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能
104 *参数:ENABLE或者DISABLE
105 */
106 b.NVIC_IRQChannelCmd = ENABLE;
107 
108 /*
109 *3、NVIC初始化函数
110 *功能:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。
111 */
112 NVIC_Init(&b);
113 /**********************************************************************/
114 
115 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//选择GPIO管脚用作外部中断线路
116 
117 }
118 void EXTI0_IRQHandler(void)
119 {
120     //确保是否产生EXTI line中断
121     if(EXTI_GetITStatus(EXTI_Line0)!=RESET) // 检查指定的EXTI线路触发请求发生与否
122     {
123         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//
124         {
125         GPIO_SetBits(GPIOB,GPIO_Pin_5);
126         }
127         else
128         {    
129         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
130         }
131         EXTI_ClearITPendingBit(EXTI_Line0);
132     }
133     
134 }

 

 

转载于:https://www.cnblogs.com/kinson/p/7694116.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[python opencv 计算机视觉零基础到实战] 十七、用鼠标画画

一、学习目标 了解长轴和短轴参数了解旋转角度参数了解起始角度参数了解终止角度参数 二、深入了解OpenCV的ellipse方法 2.1 纵横 椭圆的绘制方法在上一节中我们已经知道了是使用ellipse&#xff0c;ellipse的函数原型如下&#xff0c;为了清晰认识ellipse方法&#xff0c;…

Microsoft Build 2022 到来,开发者们做好准备了吗?

Microsoft Build 2022 将会在5月24日 - 5月26日正式举行&#xff0c;作为开发者的你是否和我一样期待本次的 Build&#xff0c;它会带来什么的技术革新以及黑科技呢&#xff1f;下面我就针对今年 Build 的几个主题结合相关技术来谈谈我对 Build 的期待。开发技术和相关工具今年…

【测绘程序设计】视距测量神器V1.0(附源程序)

神器预览: 一、视距测量概念 视距测量是利用水准仪的望远镜内十字丝分划板上的视距丝在视距尺(水准尺)上读数,根据光学和几何学原理,同时测定仪器到地面点的水平距离和高差的一种方法。 视距测量具有操作简便、速度快、不受地面起伏变化的影响的优点,被广泛应用于碎部测…

Android Studio之查找当前类的位置图标没了

1 问题 我们知道在Android studio里面如果想快速看到该文件所在的目录位置&#xff0c;点击这个图标 现在这个图标没了&#xff0c;找不到了 2 解决办法 把下面的Autoscroll from Source的勾去掉就行。

[python opencv 计算机视觉零基础到实战] 十八、用鼠标进行画画

一、学习目标 了解如何在图片中加入文字了解如何使用鼠标进行图像绘制 二、了解如何通过鼠标进行图像绘制 2.1 了解putText方法的使用 putText方法接收图像&#xff0c;文字内容&#xff0c; 坐标 &#xff0c;字体&#xff0c;大小&#xff0c;颜色&#xff0c;字体厚度这…

【测绘程序设计】坐标正算神器V1.0(附C/C#/VB源程序)

坐标正算,就是根据直线的边长、坐标方位角和一个端点的坐标,计算直线另一个端点的坐标的工作。本文用C#语言和VB语言实现坐标正算,编写坐标正算神器。 计算实例: 实例1,设直线AB的边长DAB和一个端点A的坐标XA、YA为已知,则直线另一个端点B的坐标为: XB=XA+ΔXAB YB=YA+…

Blazor University (22)路由 —— 定义路由

原文链接&#xff1a;https://blazor-university.com/routing/路由与标准 ASP.NET MVC 一样&#xff0c;Blazor 路由是一种用于检查浏览器 URL 并将其匹配到要呈现的页面的技术。路由比简单地将 URL 匹配到页面更灵活。它允许我们根据文本模式进行匹配&#xff0c;例如&#xf…

Linux文件I/O编程(二)lseek函数

文件I/O编程处理open、read、write、close&#xff0c;等必要函数对文件进行读写操作外&#xff0c;lseek、fcntl也是I/O编程很重要的函数。lseek函数lseek函数主要用来移动当前读写位置&#xff0c;第一个参数是文件描述符fd&#xff0c;第二个参数是偏移距离&#xff0c;第三…

[python opencv 计算机视觉零基础到实战] 十九、简易绘画板制作

一、学习目标 了解事件编写一个简易绘画板 二、了解如何制作简易绘画板 2.1 了解鼠标多种事件 上一节我们简单的使用opencv的图形绘制方法&#xff0c;用鼠标绘制了一些内容。上一节所响应的是简单的双击事件EVENT_LBUTTONDBLCLK&#xff0c;在OpenCV的鼠标事件中还有很多。…

Web App 和 Native App,哪个是趋势?

2019独角兽企业重金招聘Python工程师标准>>> Web App 和 Native App&#xff0c;哪个是趋势&#xff1f; https://www.zhihu.com/question/19558750 WebAPP与原生APP的交互设计区别 http://www.woshipm.com/ucd/132869.html Web App 开发使用哪种框架比较好&#xf…

基于天地图的应用服务系统设计开发—以甘肃高校招生服务为例

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。它是“数字中国”的重要组成部分,是国家地理信息公共服务平台的公众版。“天地图”的目的在于促进地理信息资源共享和高效利用,提高测绘地理信息公共服务能力和水平,改进测绘地理信息成果的服务方式,更好地满足…

查缺补漏系统学习 EF Core 6 - 修改实体数据

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这是 EF Core 系列的第六篇文章&#xff0c;上一篇文章讲述了 EF Core 中的原始 SQL 语句查询。这篇文章讲一讲 EF Core 如何修改实体数据。点击上方或后方蓝字&#xff0c;阅读 EF Core 系列合集。实体状态在开始学习 EF…

情人节,我表白了CSDN小姐姐后,竟然...【为表白写了一个绘图工具,让我不再手残】

情人节&#xff0c;我表白了CSDN小姐姐后&#xff0c;竟然…竟然有人看了这篇文。 以下图片素材由一个还没写完的工具绘制&#xff0c;稍后会放在CSDN的代码仓库&#xff08;现在能用了&#xff0c;还没时间改&#xff0c;颜色填充算法还没写&#xff0c;有能力的朋友可以修改一…

【小程序】刘一哥课堂随机点名提问神器V1.0(附源程序)

为了能让我们的孩子们尽量来教室上课,增强课堂的参与度,激发课堂激情,提高学习效率,一哥也是煞费苦心,于是开发出了这么一款课堂点名提问神器,跟大家分享一下。 打开神器,看到的界面是这样子的,我很感激有勇气按时起床并能到教室的每一位有志之士。 点击【开始】按钮,…

Git客户端TortoiseGit(Windows系统)的使用方法

本文环境&#xff1a; 操作系统&#xff1a;Windows XP SP3 Git客户端&#xff1a;TortoiseGit-1.8.8.0-32bit 一、安装Git客户端 全部安装均采用默认&#xff01; 1. 安装支撑软件 msysgit: https://code.google.com/p/msysgit/downloads/list?qfullinstallerofficialgit 当前…

.Net 在容器中操作宿主机

1方案描述 在 docker 容器中想操作宿主机&#xff0c;一般会使用 ssh 的方式&#xff0c;然后 .Net 通过执行远程 ssh 指令来操作宿主机。本文将使用 交互式 .Net 容器版 中提供的镜像演示 .Net 在容器中如何操作宿主机。2前期准备 1. 宿主机上生成 ssh key生成 ss…

【看动漫学编程】程序员在异世界生个娃 第1篇:太极村

前言 作者文笔比较水&#xff0c;还请见谅。 以下内容还将使用视频动态漫画表现&#xff0c;剪辑完将会贴出链接。 小说剧情为剧情需要&#xff0c;过渡到知识点&#xff0c;部分篇幅可能没有技术知识点还望谅解。 由于没有经费支持&#xff0c;所以画出来的东西是我自己用代码…

【ArcGIS风暴】最牛逼空间数据批处理神器来了:用户自定义工具箱GeoStorm.tbx

【Warming up】在学习和工作的过程中,作者曾写过很多采用ArcGIS模型构建器(Model Builder)、Python代码等批处理方法(感兴趣的GISers可以去【测绘地理信息Big风暴专】栏去交流学习指导),大大的减轻了操作压力,提高了工作效率。今天给大家展示一款神器:自定义工具箱GeoS…

Linux下c/c++项目代码覆盖率的产生方法

最近做了一系列的单元测试相关的工作&#xff0c;除了各种规范及测试框架以外&#xff0c;讨论比较多的就是关于代码覆盖率的产生&#xff0c;c/c与其他的一些高级语言或者脚本语言相比较而言&#xff0c;例如 Java、.Net和php/python/perl/shell等&#xff0c;由于没有这些高级…

C# WPF从后台代码生成行列可变的表格

z概述WPF常用的表格控件是DataGrid&#xff0c;这个控件在前台XAML编写的话&#xff0c;一般列已经固定&#xff0c;然后给每个列去绑定数据&#xff0c;但是如果我的列不固定&#xff0c;随着运算结果变动呢&#xff1f;这时候DataGrid&#xff0c;就比较难实现这个需求&#…