外部中斷
1 初始化參數
/**
* @brief EXTI Init Structure definition
*/
typedef struct
{
uint32_t EXTI_Line; /*!< Specifies the EXTI lines to be enabled or disabled.
This parameter can be any combination value of @ref EXTI_Lines */
EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines.
This parameter can be a value of @ref EXTIMode_TypeDef */
EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
This parameter can be a value of @ref EXTITrigger_TypeDef */
FunctionalState EXTI_LineCmd; /*!< Specifies the new state of the selected EXTI lines.
This parameter can be set either to ENABLE or DISABLE */
}EXTI_InitTypeDef;
外部中斷庫函數
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
/* Function used to set the EXTI configuration to the default reset state *****/
void EXTI_DeInit(void);
/* Initialization and Configuration functions *********************************/
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
/* Interrupts and flags management functions **********************************/
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
void EXTI_ClearFlag(uint32_t EXTI_Line);
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
2 配置過程
[..] In order to use an I/O pin as an external interrupt source, follow steps
below:
(#) Configure the I/O in input mode using GPIO_Init()
(#) Select the input source pin for the EXTI line using SYSCFG_EXTILineConfig()
(#) Select the mode(interrupt, event) and configure the trigger
selection (Rising, falling or both) using EXTI_Init()
(#) Configure NVIC IRQ channel mapped to the EXTI line using NVIC_Init()
[..]
(@) SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx
registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
其中
EXTI_GetFlagStatus()先判斷中斷是否使能,使能之后才去判斷中斷標志位
EXIT _GetFlagStatus()直接判斷狀態標志位
擴展,所有stm32中斷處理函數入口
WWDG_IRQHandler PVD_IRQHandler
TAMP_STAMP_IRQHandler RTC_WKUP_IRQHandler
FLASH_IRQHandler RCC_IRQHandler
EXTI0_IRQHandler EXTI1_IRQHandler
EXTI2_IRQHandler EXTI3_IRQHandler
EXTI4_IRQHandler DMA1_Stream0_IRQHandler
DMA1_Stream1_IRQHandler DMA1_Stream2_IRQHandler
DMA1_Stream3_IRQHandler DMA1_Stream4_IRQHandler DMA1_Stream5_IRQHandler DMA1_Stream6_IRQHandler
ADC_IRQHandler CAN1_TX_IRQHandler
CAN1_RX0_IRQHandler CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler EXTI9_5_IRQHandler
TIM1_BRK_TIM9_IRQHandler TIM1_UP_TIM10_IRQHandler
TIM1_TRG_COM_TIM11_IRQHandler TIM1_CC_IRQHandler
TIM2_IRQHandler TIM3_IRQHandler
TIM4_IRQHandler I2C1_EV_IRQHandler
I2C1_ER_IRQHandler I2C2_EV_IRQHandler
I2C2_ER_IRQHandler SPI1_IRQHandler
SPI2_IRQHandler USART1_IRQHandler
USART2_IRQHandler USART3_IRQHandler
EXTI15_10_IRQHandler RTC_Alarm_IRQHandler
OTG_FS_WKUP_IRQHandler TIM8_BRK_TIM12_IRQHandler
TIM8_UP_TIM13_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
TIM8_CC_IRQHandler DMA1_Stream7_IRQHandler
FSMC_IRQHandler SDIO_IRQHandler
TIM5_IRQHandler SPI3_IRQHandler
UART4_IRQHandler UART5_IRQHandler
TIM6_DAC_IRQHandler TIM7_IRQHandler
DMA2_Stream0_IRQHandler DMA2_Stream1_IRQHandler
DMA2_Stream2_IRQHandler DMA2_Stream3_IRQHandler
DMA2_Stream4_IRQHandler ETH_IRQHandler
ETH_WKUP_IRQHandler CAN2_TX_IRQHandler
CAN2_RX0_IRQHandler CAN2_RX1_IRQHandler
CAN2_SCE_IRQHandler OTG_FS_IRQHandler
DMA2_Stream5_IRQHandler DMA2_Stream6_IRQHandler
DMA2_Stream7_IRQHandler USART6_IRQHandler
I2C3_EV_IRQHandler I2C3_ER_IRQHandler
OTG_HS_EP1_OUT_IRQHandler OTG_HS_EP1_IN_IRQHandler
OTG_HS_WKUP_IRQHandler OTG_HS_IRQHandler
DCMI_IRQHandler RYP_IRQHandler
HASH_RNG_IRQHandlerFPU_IRQHandler
這里中斷函數對應關系
EXPORT EXTI0_IRQHandler ----> EXTI_Line0
EXPORT EXTI1_IRQHandler ----> EXTI_Line1
EXPORT EXTI2_IRQHandler ----> EXTI_Line2
EXPORT EXTI3_IRQHandler ----> EXTI_Line3
EXPORT EXTI4_IRQHandler ----> EXTI_Line 4
EXTI9_5_IRQHandler —-> EXTI_Line 5-9
EXTI15_10_IRQHandler —-> EXTI_Line 10-15z
3.3 初始化實例
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG時鐘
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0 連接中斷線0
/* 配置EXTI_Line0 */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷事件
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿觸發
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
EXTI_Init(&EXTI_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中斷0
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//搶占優先級0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子通道優先級2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中斷通道
NVIC_Init(&NVIC_InitStructure);//配置
void EXTI0_IRQHandler(void)
{
delay_ms(10); //?消抖
if(WK_UP==1)
{
BEEP=!BEEP; //電平翻轉
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中斷標志
}
上一篇:STM32F4開發板----定時器(004)
下一篇:STM32F4開發板----串口(002)
推薦閱讀
史海拾趣
邁翔科技(COILMX)的創始人看到了電子行業,特別是電感器市場的巨大潛力。1996年,公司正式成立,初期主要專注于SMD電感的設計、制造和銷售。公司從香港起步,逐步在深圳設立工廠,引進先進的生產設備和技術,為未來的發展奠定了堅實的基礎。
Bedford Opto公司深知人才是企業發展的核心。因此,公司高度重視人才培養和團隊建設。通過提供良好的工作環境和福利待遇,吸引和留住了一批優秀的人才。同時,公司還注重員工的培訓和發展,不斷提升員工的專業素質和綜合能力。
這些故事雖然基于虛構,但它們反映了電子行業中許多企業可能經歷的發展過程和面臨的挑戰。當然,Bedford Opto公司的真實發展歷程可能有所不同,具體的故事需要參考公司的官方資料和相關報道。
API Technologies一直將品質管理作為公司的核心競爭力之一。公司建立了完善的質量管理體系,從原材料采購到產品生產的每一個環節都進行嚴格的質量控制。同時,公司還注重持續改進和優化生產流程,提高生產效率和產品質量。這些措施使得API Technologies的產品在市場上具有極高的口碑和競爭力。
隨著時間的推移,Cornell Dubilier公司不斷致力于技術創新和產品升級。在電力電容領域,公司取得了顯著的成果,其產品廣泛應用于飛機、激光醫學技術、替代能源、電焊機及發電機等多個領域。這些技術的突破和應用,不僅提升了公司的市場競爭力,也為電子行業的發展做出了貢獻。
不少工程師購買電子元件大都在中發,賽格等地,但對一些偏僻的器件,或者小數量購買的話,畢竟專程跑一趟非常不方便,并且極容易買到拆機貨或者散新貨,而這些器件如果出問題,有可能對研發的進度造成影響。 如果利用i ...… 查看全部問答∨ |
|
Analog Design/verifiction Engineer Analog Design/verifiction Engineer 美資公司 LSI 上海研發中心高薪誠聘存儲通訊領域人才,薪水待遇優厚,部分人員有出國培訓機會。(部門內部推薦) 有意者請將中英文簡歷發送至:asic_tapeout@hotmail.com Analog Design Engineer City :&nbs ...… 查看全部問答∨ |
|
諾貝爾和平獎獲得者艾伯特·史懷哲(Albert Schweitzer) 說,“逃離生命迷思的方法有二:音樂和貓。”而現在流行的“丁寵”家庭——把寵物當兒女的兩人家庭,也有不少人把貓咪當成家庭新成員,說起貓咪,和說孩子的口吻一模一樣。貓究竟有什么魔力 ...… 查看全部問答∨ |
|
樓主我是一名年近30的工程師,目前在一大城市的半導體日企工作。1直2在奔3路上,94不敢娶7買房。最近面試不少90后,公司也有兩個90后新人,他們個個像個小人精,就是那個責任心和態度呀~~~~搞出的事情經常讓你無言以對,偏偏他們嘴甜會賣萌, ~~~~~ ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI
- 玩轉 ESP32 + Arduino (八) U8G2驅動OLED