4.把相應的IO口設置為中斷線路
由于GPIO并不是專用的中斷引腳,因此在用GPIO來觸發(fā)外部中斷的時候需要設置將GPIO相應的引腳和中斷線連接起來,具體代碼如下:
- void EXTI_cfg()
- {
- EXTI_InitTypeDef EXTI_InitStructure;
- //清空中斷標志
- EXTI_ClearITPendingBit(EXTI_Line2);
- EXTI_ClearITPendingBit(EXTI_Line3);
- EXTI_ClearITPendingBit(EXTI_Line5);
- //選擇中斷管腳PC.2 PC.3 PC.5
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource3);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
- EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line5; //選擇中斷線路2 3 5
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //設置為中斷請求,非事件請求
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; //設置中斷觸發(fā)方式為上下降沿觸發(fā)
- EXTI_InitStructure.EXTI_LineCmd = ENABLE; //外部中斷使能
- EXTI_Init(&EXTI_InitStructure);
- }
復制代碼
EXTI_cfg中需要調用到的函數(shù)都在stm32f10x_exti.c。
5.寫中斷響應函數(shù)
STM32不像C51單片機那樣,可以用過interrupt關鍵字來定義中斷響應函數(shù),STM32的中斷響應函數(shù)接口存在中斷向量表中,是由啟動代碼給出的。默認的中斷響應函數(shù)在stm32f10x_it.c中。因此我們需要把這個文件加入到工程中來。
在這個文件中,我們發(fā)現(xiàn),很多函數(shù)都是只有一個函數(shù)名,并沒有函數(shù)體。我們找到EXTI2_IRQHandler()這個函數(shù),這就是EXTI2中斷響應的函數(shù)。我的目標是將LED燈點亮,所以函數(shù)體其實很簡單:
- void EXTI2_IRQHandler(void)
- {
- //點亮LED燈
- GPIO_SetBits(GPIOD,GPIO_Pin_6);
- //清空中斷標志位,防止持續(xù)進入中斷
- EXTI_ClearITPendingBit(EXTI_Line2);
- }
- void EXTI3_IRQHandler(void)
- {
- GPIO_SetBits(GPIOD,GPIO_Pin_3);
- EXTI_ClearITPendingBit(EXTI_Line3);
- }
- void EXTI9_5_IRQHandler(void)
- {
- GPIO_SetBits(GPIOB,GPIO_Pin_5);
- EXTI_ClearITPendingBit(EXTI_Line5);
- }
復制代碼
由于EXTI5-9是共用一個中斷響應函數(shù),因此所有的EXTI5 – EXTI9的響應函數(shù)都寫在這個里面。
6.寫主函數(shù)
- #include "stm32f10x_lib.h"
- void RCC_cfg();
- void IO_cfg();
- void EXTI_cfg();
- void NVIC_cfg();
- int main()
- {
- RCC_cfg();
- IO_cfg();
- NVIC_cfg();
- EXTI_cfg();
- while(1);
- }
復制代碼
main函數(shù)前是函數(shù)聲明,main函數(shù)函數(shù)體中都是調用初始化配置函數(shù),然后進入死循環(huán),等待中斷響應。
以上就是STM32外部中斷的介紹,功能可以不用管,知道該配置哪些東西就夠了。ok,基礎知識學習完了吧!那么就可以買個具體模塊來試試了。這里用的是四路數(shù)字觸摸感應傳感器模塊。
下面是該模塊的簡要描述:
一、模塊描述
該傳感器模塊是四路觸摸感應模塊,基于TTP224芯片。通過觸摸數(shù)字(1、2、3、4),可以起到控制外圍硬件電路的作用。手按數(shù)字開關,對應的燈(D1、D2、D3、D4)會亮,對應的四個輸出口(OUT1、OUT2、OUT3、OUT4)中的一個會輸出高電平。
模塊參數(shù):
1、板載TTP224電容式4鍵觸摸感應IC
2、板載4路電平狀態(tài)指示燈
3、工作電壓:2.4V-5.5V
4、模塊可以設置輸出模式、鍵輸出模式、最長輸出時間和快速/低功耗選擇
5、PCB板子尺寸:35(mm)x29(mm)
二、硬件調試
(1) 硬件實物圖展示如下圖:
1.png (112.49 KB, 下載次數(shù): 45)
下載附件
2018-1-16 21:13 上傳
(2) 模塊原理圖接口展示如圖:
2.png (15.31 KB, 下載次數(shù): 43)
下載附件
2018-1-16 21:13 上傳
(3) 管腳實際連接表
單片機---->kepler11---->傳感器模塊,連接表
三、軟件調試
本工程實現(xiàn)的功能是通過觸摸傳感器模塊中的數(shù)字觸發(fā)引腳的外部中斷,從而控制核心板上LED燈閃爍以及K11開發(fā)板上的繼電器。本案例基于光輪電子公司TreeOS軟件開發(fā)架構運行,具體軟件工程還請關注光輪電子公司TreeOS驅動庫文件。
以下是工程圖:
3.png (22.58 KB, 下載次數(shù): 43)
下載附件
2018-1-16 21:13 上傳