版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——STM32的GPIO端口復(fù)用為外部中斷信號(hào)輸入端GPIO端口復(fù)用為外部中斷信號(hào)輸入端,控制PA1端口電平變化,使用MDKE_inter.c代碼如下,其它使用keil自帶的文件
#include\
voidRCC_cfg()//時(shí)鐘設(shè)置
{//開啟PA端口時(shí)鐘,由于GPIO用作中斷輸入,屬于端口復(fù)用,故也需要開啟復(fù)用時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);}
voidNVIC_cfg()//設(shè)置中斷{
NVIC_InitTypeDefNVIC_InitStructure;//定義結(jié)構(gòu)體變量
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//選擇中斷分組2,3個(gè)中斷源,需2bit進(jìn)行優(yōu)先級(jí)設(shè)置//高兩位用于設(shè)置搶占式優(yōu)先級(jí);//低兩位用于設(shè)置響應(yīng)式優(yōu)先級(jí)
NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQChannel;//選擇中斷通道2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//響應(yīng)式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能中斷
NVIC_Init(
NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQChannel;//選擇中斷通道3
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//響應(yīng)式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能中斷
NVIC_Init(
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;//選擇中斷通道5
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//響應(yīng)式中斷優(yōu)先級(jí)設(shè)置為0
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能中斷
NVIC_Init(}
voidIO_cfg()//GPIO初始化{
GPIO_InitTypeDefGPIO_InitStructure;//定義結(jié)構(gòu)體變量
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//選擇使用的引腳PA1做led指示
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//設(shè)置端口翻轉(zhuǎn)速度
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//設(shè)置端口工作模式推挽輸出
GPIO_Init(GPIOA,//初始化PA.1引腳
GPIO_ResetBits(GPIOA,GPIO_Pin_1);//將PA.1引腳設(shè)置為低電平輸出,LED燈滅
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5;//選擇引腳235作為中斷信號(hào)輸入端
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//選擇輸入模式為浮空輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//輸出頻率最大50MHz
GPIO_Init(GPIOA,//設(shè)置PA.2/PA.3/PA.5}
//由于GPIO并不是專用的中斷引腳,因此在用GPIO來觸發(fā)外部中斷的時(shí)候需要設(shè)置將GPIO相應(yīng)的引腳和中斷線連接起來
voidEXTI_cfg()//將相應(yīng)的IO口與中斷線路進(jìn)行連接{
EXTI_InitTypeDefEXTI_InitStructure;//定義結(jié)構(gòu)體變量
EXTI_ClearITPendingBit(EXTI_Line2);//清空中斷標(biāo)志PA.2中斷口EXTI_ClearITPendingBit(EXTI_Line3);//PA.3中斷口EXTI_ClearITPendingBit(EXTI_Line5);//PA.5中斷口
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);//選擇中斷管腳PA.2PA.3PA.5
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource5);
EXTI_InitStructure.EXTI_Line=EXTI_Line2|EXTI_Line3|EXTI_Line5;//選擇中斷線路235
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//設(shè)置為中斷請(qǐng)求,非事件請(qǐng)求
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;//設(shè)置中斷觸發(fā)方式為上下降沿觸發(fā)
EXTI_InitStructure.EXTI_LineCmd=ENABLE;//外部中斷使能
EXTI_Init(}
intmain(){
RCC_cfg();//設(shè)置時(shí)鐘IO_cfg();//GPIO設(shè)置
NVIC_cfg();//中斷管理設(shè)置
EXTI_cfg();//GPIO與中斷線路的連接
while(1);}
//文件說明:
////庫函數(shù)的默認(rèn)路徑為:...\\keil\\arm\\rv31\\lib\\st\\stm32f10x//1:時(shí)鐘設(shè)置,使用庫文件stm32f10x_rcc.c
//2:中斷管理,使用庫文件stm32f10x_nvic.c;
//另cortexm3_macro.s為中斷管理庫文件所需,為內(nèi)核中特別的指令操作//3:GPIO設(shè)置,使用庫文件stm32f10x_gpio.c
//4:GPIO與中斷線路的連接,使用庫文件stm32f10x_exti.c
//5:中斷函數(shù),位于stm32f10x_it.c中,具體的中斷操作代碼如下:(找到具體的函數(shù)位置,將如下函數(shù)體寫入中斷函數(shù)內(nèi))/*
voidEXTI2_IRQHandler(void)//PA.2中斷信號(hào)的響應(yīng)函數(shù)搶占優(yōu)先級(jí):0/響應(yīng)優(yōu)先級(jí):0{
GPIO_SetBits(GPIOA,GPIO_Pin_1);//將PA.1端口置位,點(diǎn)亮LED
EXTI_ClearITPendingBit(EXTI_Line2);//清空中斷標(biāo)志位,防止持續(xù)進(jìn)入中斷}
voidEXTI3_IRQHandler(void)//PA.3中斷信號(hào)的響應(yīng)函數(shù)搶占優(yōu)先級(jí):0/響應(yīng)優(yōu)先級(jí):0{
GPIO_ResetBits(GPIOA,GPIO_Pin_1);//將PA.1端口清零,熄滅LED
EXTI_ClearITPendingBit(EXTI_Line3);}
voidEXTI9_5_IRQHandler(void)//PA.5中斷信號(hào)的響應(yīng)函數(shù)搶占優(yōu)先級(jí):0/響應(yīng)優(yōu)先級(jí):0{
u8ReadValue;//定義存儲(chǔ)端口狀態(tài)的變量
ReadValue=GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1);//讀取PA1端口的當(dāng)前狀態(tài)if(ReadValue==0)//若該端口當(dāng)前為低電平,{
G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)買賣合同
- 車輛駕駛承包合同范本
- 外貿(mào)代理合同仲裁條款
- 正規(guī)個(gè)人借款合同范本
- 無償借用車間合同范本
- 綠化綠植買賣合同范本
- 2025合法的工程合同樣式
- 專利申請(qǐng)委托合同書樣本
- 項(xiàng)目咨詢服務(wù)合同范本
- 貨物運(yùn)輸公司的勞務(wù)合同
- 保安服務(wù)項(xiàng)目信息反饋溝通機(jī)制
- 全國各省(直轄市、自治區(qū))市(自治州、地區(qū))縣(縣級(jí)市)區(qū)名稱一覽表
- 《團(tuán)隊(duì)介紹模板》課件
- 常用中醫(yī)適宜技術(shù)目錄
- 沖壓模具價(jià)格估算方法
- 碳納米管應(yīng)用研究
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲洞書簡(jiǎn)全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級(jí)上、下冊(cè)口算題大全
- 和平精英電競(jìng)賽事
評(píng)論
0/150
提交評(píng)論