新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM8-利用外部中斷編寫兩個按鍵控制燈的亮滅

        STM8-利用外部中斷編寫兩個按鍵控制燈的亮滅

        作者: 時間:2016-11-24 來源:網絡 收藏
        目的:熟悉外部中斷的使用。(兩個按鍵控制燈的亮滅)
        #include"stm8s.h"
        #include "stm8s_exti.h"
        #define uchar unsigned char
        #define uint unsigned int
        #define ulong unsigned long
        void delay(uint i)
        {
        while(i--);
        }
        void main()
        {

        GPIO_DeInit(GPIOD);
        GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);//輸出
        GPIO_Init(GPIOD, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);//輸出
        GPIO_DeInit(GPIOB);
        GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_FL_IT);//輸入
        GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_IT);//輸入

        EXTI_DeInit();
        EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_ONLY);


        enableInterrupts();
        while (1)
        {
        }
        }
        #pragma vector=6//端口B中斷編號為4,4+2=6
        __interrupt void EXIT_PORTB_IRQHander(void)
        {
        if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_0)==0)
        {
        delay(250);//延時消抖動
        if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_0)==0)
        {
        while((GPIO_ReadInputData(GPIOB)&GPIO_PIN_0)==0);//釋放檢測
        GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
        }
        }
        if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0)
        {
        delay(250);//延時消抖動
        if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0)
        {
        while((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0);//釋放檢測
        GPIO_WriteReverse(GPIOD, GPIO_PIN_1);
        }
        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 即墨市| 耒阳市| 汾西县| 阳泉市| 涿州市| 子洲县| 托克托县| 察隅县| 清苑县| 扬州市| 山东省| 马山县| 苍山县| 南陵县| 北安市| 深泽县| 财经| 普安县| 溆浦县| 溧阳市| 同心县| 邵阳市| 杭锦后旗| 会泽县| 平原县| 阿合奇县| 水城县| 隆林| 南靖县| 罗甸县| 察哈| 绥化市| 红安县| 犍为县| 科技| 河北省| 宁河县| 连南| 河东区| 阿图什市| 方正县|