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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2266|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32之外部中斷

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

              exit.c
#include<stm32f10x_lib.h>
#include"common.h"
#include"exit.h"
#include"key.h"
#include"led.h"
void EXTI15_10_IRQHandler(void)  //中斷服務(wù)函數(shù)
{
delay_ms(10);   //消抖   
if(KEY1==0)     //按鍵0
{
  LED1=!LED1;
}else if(KEY2==0)//按鍵1
{
  LED2=!LED2;
}
EXTI->PR=1<<11;    //清除LINE13上的中斷標(biāo)志位
EXTI->PR=1<<12;    //清除LINE15上的中斷標(biāo)志位
}
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);  //下降沿觸發(fā)
Ex_NVIC_Config(GPIO_A,12,FTIR);
MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2); //搶占2,子優(yōu)先級(jí)1,組2
}
exit.c 文件總共包含2個(gè)函數(shù)。一個(gè)是外部中斷初始化函數(shù)voidEXTIX_Init(void),另外一個(gè)是中斷服務(wù)函數(shù)。voidEXTI15_10_IRQHandler(void)是外部中斷10~15 的中斷服務(wù)函數(shù),這里
我們是用了中斷11 和12,這兩個(gè)中斷共用一個(gè)中斷服務(wù)函數(shù)。下面我們分別介紹這幾個(gè)函數(shù)。
首先是外部中斷初始化函數(shù) void EXTIX_Init(void),該函數(shù)嚴(yán)格按照我們之前的步驟來(lái)初
始化外部中斷,這里面調(diào)用了兩個(gè)函數(shù) Ex_NVIC_Config和MY_NVIC_Init,其作用是設(shè)置中斷的觸發(fā)方式和中斷的優(yōu)先級(jí)。KEY1 和KEY2 是低電平有效的,KEY1
和KEY2 設(shè)置成上拉輸入。當(dāng)中斷觸發(fā)的時(shí)候,而KEY1 和
KEY2 會(huì)產(chǎn)生下降沿。這里我們把分配到第二組。
接 下 來(lái) 我 們 介 紹 中 斷 服 務(wù) 函 數(shù) 。 中
斷服務(wù)函數(shù)void EXTI15_10_IRQHandler(void),從
函數(shù)名就可以看出是給中斷線10~15 服務(wù)的,也就是多個(gè)中斷線上的中斷共用一個(gè)中斷服務(wù)函
數(shù)。在該函數(shù)里面我們先對(duì)進(jìn)入中斷的信號(hào)進(jìn)行區(qū)分(通過(guò)中斷輸入IO 口上的電平判斷),再
分別進(jìn)行處理。最后也是通過(guò)向EXTI->PR 的對(duì)應(yīng)位寫1 清除中斷線上的中斷請(qǐng)求。

主函數(shù)main.c
//外部中斷的實(shí)驗(yàn),有兩個(gè)按鍵來(lái)觸發(fā)控制LED
#include<stm32f10x_lib.h>
#include"common.h"
#include"led.h"
#include"exit.h"
int main(void)
{
Stm32_Clock_Init(9);//系統(tǒng)時(shí)鐘初始化
delay_init(72);//延時(shí)函數(shù)的初始化
LED_Init();//LED燈的初始化
EXTIX_Init();//外部中斷的初始化
while(1)
{  }//等待中斷
}


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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线看片 | 大象一区 | 黄色成人在线网站 | 青青草原精品99久久精品66 | 99久久精品一区二区毛片吞精 | 国产精品视频 | 国产成人99久久亚洲综合精品 | 日本久久综合网 | 国内精品视频在线观看 | 91精品国产综合久久久密闭 | www日本在线| 欧美一级黄色片 | 国产在线精品一区二区 | 两性午夜视频 | 毛片久久久 | 日本午夜一区 | 精品九九久久 | 国产一区二区精品在线 | 亚洲视频手机在线 | 国产一区二区三区精品久久久 | 先锋av资源在线 | 日本午夜一区二区三区 | 成人免费观看男女羞羞视频 | 狠狠的干狠狠的操 | 国产乱码精品一区二区三区中文 | 97caoporn国产免费人人 | 欧美日韩国产高清 | 日韩欧美视频在线 | av天天澡天天爽天天av | 岛国av免费在线观看 | 国产视频1区| 国产精品美女久久久久aⅴ国产馆 | 激情五月综合 | 91一区二区 | 欧美亚洲国产一区二区三区 | 成人九区 | 日本人做爰大片免费观看一老师 | 国产98色在线 | 精品久久香蕉国产线看观看亚洲 | 欧美日韩在线免费观看 | 久久久国产精品视频 |