新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM8-利用外部中斷編寫兩個按鍵控制燈的亮滅

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

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
目的:熟悉外部中斷的使用。(兩個按鍵控制燈的亮滅)
#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);
}
}

}



關(guān)鍵詞: STM8外部中斷按鍵控制

評論


技術(shù)專區(qū)

關(guān)閉