外部中斷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.pswp.cn/news/287481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287481.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git之tag

1 tag相關命令 1) 打上tag git tag v1.0.0 git tag -a v1.0.0 -m info 2) 查看tag git tag 3) 切換tag git checkout tagname 4) 刪除tag git tag -d v1.0.0 5) 推送遠程 推送單個tag git push origin v1.0.0 推送所有tag git push origin --tags

[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(附源程序)

神器預覽: 一、視距測量概念 視距測量是利用水準儀的望遠鏡內十字絲分劃板上的視距絲在視距尺(水準尺)上讀數,根據光學和幾何學原理,同時測定儀器到地面點的水平距離和高差的一種方法。 視距測量具有操作簡便、速度快、不受地面起伏變化的影響的優點,被廣泛應用于碎部測…

補作業:隨機生成二元四則運算

四則運算代碼如下&#xff0c;基礎不好&#xff0c;剛完成作業&#xff0c;希望老師多給點平時成績&#xff0c;謝謝老師&#xff01;#include<stdio.h>#include<stdlib.h>#include<time.h>int right0,wrong0;int a,b,c,d;/*加法運算*/void add(){int i,j;fo…

java 從數據庫取值_java 連接數據庫取值問題

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{//TODOAuto-generatedmethodstubXzdatasqlToolnewXzdata();//初始化并...public void doGet(HttpServletRequest request,HttpServletResponse response) throws I…

條件表達式

1.python中&#xff1a; a 1b 2 if a>1 else 3 2.C語言中&#xff1a;max (a>b)?a:b; 說明&#xff1a;條件運算符優先于賦值運算符 也可以這樣寫&#xff1a;a>b? a:c>d? c:d / a>b? (a100):(b100)轉載于:https://www.cnblogs.com/yjw9520/p/4841301.ht

oracle導出數據庫中表出現導出報錯(EXP-00003)未找到段 (0,0) 的存儲定義

前兩天在使用oracle數據庫&#xff0c;使用dba用戶利用PL/SQL 中的tool中export table導出表結構時&#xff0c;出現了如下問題&#xff1a;好多張表“報錯&#xff08;EXP-00003&#xff09;未找到段 (0,0) 的存儲定義 ”&#xff0c;出現這樣的結果&#xff0c;經過查找相關資…

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+…

2.2 PostgreSQL 概念

PostgreSQL 是一種關系型數據庫管理系統(RDBMS)。這意味著它是一種用于管理那些以關系形式存儲數據的系統。關系實際上是表的數學稱呼。今天&#xff0c;把數據存儲在表里的概念已經快成固有的常識了&#xff0c;但是還有其它一些方法用于組織數據庫。在類 Unix 操作系統上的文…

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…

在AngularJS的controller外部直接獲取$scope

為了防止無良網站的爬蟲抓取文章&#xff0c;特此標識&#xff0c;轉載請注明文章出處。LaplaceDemon/SJQ。 http://www.cnblogs.com/shijiaqi1066/p/5560843.html 以前利用webqq的寫過一個自動發消息的腳本&#xff0c;由于那時webqq還直接使用類似jQuery操作DOM的技術&#x…