久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2281|回復: 0
打印 上一主題 下一主題
收起左側

STM32之外部中斷

[復制鏈接]
跳轉到指定樓層
樓主
ID:107189 發表于 2016-3-4 20:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
試驗目的:本次試驗用按鍵來控制兩個LED,使用外部中斷的方式來觸發
試驗平臺:基于STM32F103C8T6的彩屏開發板
接口:KEY1——PA9
     KEY2——PA10
     LED1——PA11
     LED2——PA12
試驗基本步驟:1)初始化IO 口為輸入。
             2)開啟IO 口復用時鐘,設置IO 口與中斷線的映射關系。
             3)開啟與該IO 口相對的線上中斷/事件,設置觸發條件。
              4)配置中斷分組(NVIC),并使能中斷。
             5)編寫中斷服務函數。
程序代碼:led.c led.h key.h key.c 和之前的按鍵以致
        新加的exit.h
#ifndef EXIT_H
#define EXIT_H
void EXTIX_Init(void);
#endif
僅僅是申明了一個中斷初始化函數

              exit.c
#include<stm32f10x_lib.h>
#include"common.h"
#include"exit.h"
#include"key.h"
#include"led.h"
void EXTI15_10_IRQHandler(void)  //中斷服務函數
{
delay_ms(10);   //消抖   
if(KEY1==0)     //按鍵0
{
  LED1=!LED1;
}else if(KEY2==0)//按鍵1
{
  LED2=!LED2;
}
EXTI->PR=1<<11;    //清除LINE13上的中斷標志位
EXTI->PR=1<<12;    //清除LINE15上的中斷標志位
}
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRH&=0xfff00fff;  //配置為推挽輸出
GPIOA->CRH|=0x00088000;
GPIOA->ODR|=1<<11;   //拉高
GPIOA->ODR|=1<<12;
Ex_NVIC_Config(GPIO_A,11,FTIR);  //下降沿觸發
Ex_NVIC_Config(GPIO_A,12,FTIR);
MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2); //搶占2,子優先級1,組2
}
exit.c 文件總共包含2個函數。一個是外部中斷初始化函數voidEXTIX_Init(void),另外一個是中斷服務函數。voidEXTI15_10_IRQHandler(void)是外部中斷10~15 的中斷服務函數,這里
我們是用了中斷11 和12,這兩個中斷共用一個中斷服務函數。下面我們分別介紹這幾個函數。
首先是外部中斷初始化函數 void EXTIX_Init(void),該函數嚴格按照我們之前的步驟來初
始化外部中斷,這里面調用了兩個函數 Ex_NVIC_Config和MY_NVIC_Init,其作用是設置中斷的觸發方式和中斷的優先級。KEY1 和KEY2 是低電平有效的,KEY1
和KEY2 設置成上拉輸入。當中斷觸發的時候,而KEY1 和
KEY2 會產生下降沿。這里我們把分配到第二組。
接 下 來 我 們 介 紹 中 斷 服 務 函 數 。 中
斷服務函數void EXTI15_10_IRQHandler(void),從
函數名就可以看出是給中斷線10~15 服務的,也就是多個中斷線上的中斷共用一個中斷服務函
數。在該函數里面我們先對進入中斷的信號進行區分(通過中斷輸入IO 口上的電平判斷),再
分別進行處理。最后也是通過向EXTI->PR 的對應位寫1 清除中斷線上的中斷請求。

主函數main.c
//外部中斷的實驗,有兩個按鍵來觸發控制LED
#include<stm32f10x_lib.h>
#include"common.h"
#include"led.h"
#include"exit.h"
int main(void)
{
Stm32_Clock_Init(9);//系統時鐘初始化
delay_init(72);//延時函數的初始化
LED_Init();//LED燈的初始化
EXTIX_Init();//外部中斷的初始化
while(1)
{  }//等待中斷
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草精品 | 日韩视频一区二区 | 成人做爰9片免费视频 | 精品少妇一区二区三区免费观 | 91伊人| 欧美日韩小视频 | 一本色道久久综合亚洲精品酒店 | 国产高清视频在线播放 | 久色成人 | 激情五月婷婷综合 | 五月婷婷在线观看 | 久久精品日韩 | 青草国产 | 超碰在线中文字幕 | 黄色一节片| 中文字幕系列 | 国产女人18毛片水18精品 | 免费高清av | 国产一区二区在线观看视频 | 亚洲一区在线观看视频 | 日韩高清一区二区 | 久久综合爱 | 黄免费视频 | 欧美国产精品 | 亚洲精品911 | 中文在线字幕 | 国产精品婷婷 | 成人永久免费视频 | 国产精品国产三级国产 | 国产永久免费视频 | 国产一区二区三区在线视频 | 精品国产乱码久久久久久蜜臀网站 | 国产视频999 | 日韩视频免费大全中文字幕 | 三级av网站 | 国产一区二区三区在线视频 | 一道本av | 欧美一区二区精品 | 国产成人三级 | 日韩精品久久久久久久 | 亚洲综人网 |