日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]STM32的GPIO可以作為中斷輸入使用,這樣增強(qiáng)了實時檢測性,可以用于外部按鍵或是觸控等使用。如果使用,其實不難,這里使用標(biāo)準(zhǔn)的固件庫,加入外部中斷的庫文件:在stm32f10x_conf.h 中,打開#include "stm32f10x_ex

STM32的GPIO可以作為中斷輸入使用,這樣增強(qiáng)了實時檢測性,可以用于外部按鍵或是觸控等使用。如果使用,其實不難,這里使用標(biāo)準(zhǔn)的固件庫,加入外部中斷的庫文件:


在stm32f10x_conf.h 中,打開#include "stm32f10x_exti.h"


這里通過外部觸控的方式,點(diǎn)亮或是關(guān)閉一個LED燈的例子,熟悉一下STM32F103 系列外部中斷的使用。


我這里使用的GPIO為:PC11,頭文件的GPIO宏定義為:


/****EXTIControl****/

voidEXTI_GPIO_Init(void);

#defineRCC_TOUCHOUTRCC_APB2Periph_GPIOC

#defineTOUCHOUT_PORTGPIOC

#defineTOUCHOUT_PINSGPIO_Pin_11

#defineTouchOut()GPIO_ReadInputDataBit(TOUCHOUT_PORT,TOUCHOUT_PINS)


外部中斷函數(shù)實現(xiàn)如下:


voidEXTI_GPIO_Init(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

EXTI_InitTypeDefEXTI_InitStructure;

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_TOUCHOUT|RCC_APB2Periph_AFIO,ENABLE);//打開GPIOAFIO的時鐘

GPIO_InitStructure.GPIO_Pin=TOUCHOUT_PINS;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;

GPIO_Init(TOUCHOUT_PORT,&GPIO_InitStructure);

EXTI_ClearITPendingBit(EXTI_Line11);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource11);//PC11為GPIOC的PIN11

EXTI_InitStructure.EXTI_Line=EXTI_Line11;//PC11,為:EXTI_Line11

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;//中斷方式為上升與下降沿

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//NVIC

NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}



下面為中斷函數(shù)的實現(xiàn)方式:


voidEXTI15_10_IRQHandler(void)//這里為:EXTI15_10(外部中斷號的10~15都在這里實現(xiàn))

{

if(EXTI_GetITStatus(EXTI_Line11)!=RESET)//這里為判斷相應(yīng)的中斷號是否進(jìn)入中斷,如果有多個中斷的話。

{

EXTI_ClearITPendingBit(EXTI_Line11);//清中斷

if(Change_Flag!=TouchOut())

LED(ON);

else

LED(OFF);

}

}


因此,就實現(xiàn)了外部中斷的控制。按鍵,如果只有一兩個,不想用輪循掃描的方式,就可以用外部中斷的方式判斷。這樣可以增強(qiáng)實時性,也不過多占用CPU資源。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉