新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32的學習心得之外部中斷/事件控制器(EXTI)

        STM32的學習心得之外部中斷/事件控制器(EXTI)

        作者: 時間:2016-11-28 來源:網絡 收藏
        外部中斷/事件我的理解是可以將單片機的IO口全部設置為外部中斷口,我們可以根據觸發哪個IO口中斷,去執行相應的中斷處理函數。這個其實很簡單,51一般有2個外部中斷口,而stm32將其擴展,每個IO口都可以作為外部中斷口。

        外部中斷配置也很簡單,只需要打開相應的IO口配置,時鐘,打開stm32f10x_conf.h里的 #include "stm32f10x_exti.h" ,配置EXIT和中斷處理函數即可。下面是簡單的實例(基于3.0庫):

        本文引用地址:http://www.104case.com/article/201611/322971.htm

        void GPIO_Configuration(void)//配置GPIOC_5口作為外部中斷口
        {

        GPIO_InitTypeDefGPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING ;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        }

        void EXTI_Configuration(void)
        {
        EXTI_InitTypeDef EXTI_InitStructure;
        EXTI_InitStructure.EXTI_Line = EXTI_Line5; //外部中斷線
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//中斷觸發方式
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;//打開中斷
        EXTI_Init(&EXTI_InitStructure);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); //選擇 GPIO管腳用作外部中斷線路

        }

        void NVIC_Configuration(void)
        {
        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);// 搶占式優先級別

        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//指定中斷源
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定響應優先級別1
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        }

        //中斷處理函數

        void EXTI9_5_IRQHandler(void)
        {

        if(EXTI_GetITStatus(EXTI_Line5) != RESET)
        {

        //添加中斷處理程序

        EXTI_CleaRFlag(EXTI_Line5);
        EXTI_ClearITPendingBit(EXTI_Line5);

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 松溪县| 隆安县| 凌源市| 郧西县| 绥芬河市| 伊春市| 康马县| 兴隆县| 义乌市| 晋州市| 凤阳县| 和平县| 万源市| 广河县| 新疆| 绵竹市| 乡宁县| 民县| 玉门市| 定西市| 同心县| 峨山| 蓝田县| 五指山市| 咸丰县| 罗山县| 孝义市| 乌兰县| 富源县| 乌兰浩特市| 绥宁县| 阿尔山市| 甘德县| 竹山县| 延长县| 南汇区| 莲花县| 镇远县| 刚察县| 海盐县| 旺苍县|