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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32外部中斷筆記

[復制鏈接]
跳轉到指定樓層
樓主
ID:185378 發表于 2017-4-1 15:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
外部中斷:
EXTI0-----EXTI15  (由于中斷向量表有限,有幾個中斷公用一個中斷向量)
中斷向量表(內中斷(灰色區域)和外中斷)
其中
PA0--PG0對應的使EXTI0
PA1--PG1對應的是EXTI1
.......
PA15--PG15對應的是EXTI15
外部終端應用:

實例:
PA0引腳位外部終端輸入引腳,實現以下功能:每產生一次外部終端,PA1所接入的LED等的狀態取反。
程序編程步奏:
第一步:
首先配置引腳模式(PA0輸入上拉50MHz,PA1推挽輸出50MHz)
void FUN_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_Config;
//設置GPIOA模式
GPIO_Config.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
GPIO_Config.GPIO_Pin=GPIO_Pin_1;
GPIO_Config.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Config);
GPIO_InitTypeDef GPIO_Config2;
//設置GPIOA模式
GPIO_Config2.GPIO_Mode=GPIO_Mode_IPU;//上拉輸入GPIO_Config2.GPIO_Pin=GPIO_Pin_0;
GPIO_Config2.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Config2);
}
第二步:配置外部中斷初始化
void FUN_EXIT_Config(void)
{
                EXTI_InitTypeDef EXTI_InitStructure;

                EXTI_ClearFlag(EXTI_Line0);//清除 EXTI 線路掛起標志位,使中斷響應及時
                GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);//將PA0設置為中斷引腳

                EXTI_InitStructure.EXTI_Line = EXTI_Line0;//PA0對應的
                EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式
                EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿觸發
                EXTI_InitStructure.EXTI_LineCmd = ENABLE;
                EXTI_Init(&EXTI_InitStructure);
}

第三步:時鐘使能配置
void FUN_SystemClock_Config(void)
{
        SystemInit();//系統時鐘初始化
        //初始化GPIOB的時鐘
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打開A管腳時鐘
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打開GPIO的輔助功能時鐘
}

第四步:中斷優先級配置
/*
配置中斷優先級NVIC
*/
void FUN_NVIC_Config(void)
{
                NVIC_InitTypeDef NVIC_InitStructure;

                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
                NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
                NVIC_Init(&NVIC_InitStructure);
}

第五步:中斷服務函數配置
void EXTI0_IRQHandler(void)
{
   if(EXTI_GetITStatus(EXTI_Line0)==1)
         {
                        EXTI_ClearFlag(EXTI_Line0);//清除 EXTI 線路掛起標志位,使中斷響應及時
                 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1))
                        GPIO_ResetBits(GPIOA,GPIO_Pin_1);
                 else
                         GPIO_SetBits(GPIOA,GPIO_Pin_1);
         }
}
最后,編寫主函數
int main(void)
{
//系統初始化部分
        FUN_SystemClock_Config();//時鐘初始化
        FUN_GPIO_Config();//IO初始化
        FUN_EXIT_Config();//外部中斷初始化        
        FUN_NVIC_Config();//中斷優先級初始化

        while(1);
}

總結:
[size=10.5000pt]1.時鐘:掛載引腳的復用功能時鐘(RCC_APB2Periph_AFIO,掛載輸出引腳的時鐘(RCC_APBPeriph_GPIOA),以及首先初始化(System_Init())。
[size=10.5000pt]2.引腳模式:PA0,上拉輸入(中斷輸入引腳);PA1,推挽輸出。
[size=10.5000pt]3.中斷配置:參數配置結構體
typedef struct
{
u32 EXTI_Line;
EXTIMode_TypeDef EXTI_Mode;
EXTIrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd;
} EXTI_InitTypeDef;
除此之外,還需要指定中斷引腳(GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0))。清除中斷標志位(EXTI_ClearFlag(EXTI_Line0))。
[size=10.5000pt]4.中斷優先級配置
NVIC_InitTypeDef NVIC_InitStructure這個結構體的參數
5.中斷服務函數
void EXTI0_IRQHandler(void);

這些步奏缺一不可。

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线一区二区三区 | 亚洲精品久久久久久久久久久 | 亚洲精品av在线 | 成人免费观看男女羞羞视频 | 四虎影院在线观看av | 91精品久久久久久久久久入口 | 国产一级片av | 中文字幕观看 | 免费一区二区三区在线视频 | 日韩一二三区 | 欧美精品欧美精品系列 | 国产精品久久欧美久久一区 | a在线免费观看 | av黄色网 | 99re6热在线精品视频播放 | 视频在线亚洲 | 成人免费小视频 | 国产片侵犯亲女视频播放 | 久久91精品国产一区二区 | www.国产| 国产精品久久国产精品99 gif | 在线视频国产一区 | 久久久久国产一区二区 | 香蕉91| 国产在线小视频 | 天天草天天操 | 欧美日韩国产在线 | 免费视频成人国产精品网站 | 久久精品国产一区 | 国产精品亚洲精品日韩已方 | 亚洲欧美国产毛片在线 | 日韩在线中文字幕 | 亚洲综合色丁香婷婷六月图片 | 毛片在线免费播放 | 国产精品久久久久av | 久久久久国 | 亚洲欧美成人 | 日韩欧美一区二区三区在线播放 | 亚洲精品国产第一综合99久久 | 最近日韩中文字幕 | 成人一区av|