|
修改的時(shí)候有同時(shí)寫(xiě)入0x05fa0000啊,后邊測(cè)試,一直無(wú)法搶占優(yōu)先級(jí),while(1)中重新讀取AIRCR這個(gè)內(nèi)容,發(fā)現(xiàn)沒(méi)有修改成功,分組配置還是上電復(fù)位時(shí)默認(rèn)的。
#include<stm32f10x.h>
void delay(u32 z)
{
while(z--);
}
int main()
{
u32 temp;
// RCC->APB2ENR|=(1<<6);//啟動(dòng)端口E的時(shí)鐘//不能打開(kāi)這個(gè)時(shí)鐘,否則出錯(cuò)�。�!
GPIOE->CRL|=0X000ccc00;//io口234為上拉輸入模式
EXTI->IMR|=(1<<4)|(1<<3)|(1<<2);//允許外部中斷432中斷請(qǐng)求
EXTI->FTSR|=(1<<4)|(1<<3)|(1<<2);//下降沿觸發(fā)
NVIC->ISER[0]|=(1<<10)|(1<<9)|(1<<8);//打開(kāi)nvic的外部中斷432允許請(qǐng)求
temp=(SCB->AIRCR)&0x0000f8ff;//aircr寄存器中斷分組清零
temp=temp|(1<<10)|(1<<9);//設(shè)置為組1模式
temp|=0x05FA0000;//寫(xiě)入鑰匙
SCB->AIRCR=temp;//設(shè)置中斷分組:1位搶占優(yōu)先級(jí),3位響應(yīng)優(yōu)先級(jí)
NVIC->IP[0]|=0X80800000;//設(shè)置中斷3.2優(yōu)先級(jí):搶占優(yōu)先級(jí)1,響應(yīng)優(yōu)先級(jí)0
NVIC->IP[1]=0X00000070;//中斷 4優(yōu)先級(jí):搶占式優(yōu)先級(jí)0,響應(yīng)優(yōu)先級(jí)7
RCC->APB2ENR|=0X01;
AFIO->EXTICR[0]|=0X4400;
AFIO->EXTICR[1]|=0X04; //打開(kāi)afio時(shí)鐘,設(shè)置pe234為外部中斷
RCC->APB2ENR|=(1<<4);
GPIOC->CRL|=0X22222222;
GPIOC->BSRR=0XFF;//初始化led燈的io口
while(1)
{
GPIOC->BSRR=(SCB->AIRCR)>>8;//發(fā)現(xiàn)aircr寄存器無(wú)法寫(xiě)入,依然是上電默認(rèn)值
}
}
//以下3個(gè)外部中斷函數(shù)均為led燈的閃爍操作
void EXTI2_IRQHandler()
{
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
EXTI->PR|=(1<<2);//清除外部中斷標(biāo)志
}
void EXTI3_IRQHandler()
{
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
delay(6000000);
GPIOC->BRR=0XFF;
delay(6000000);
GPIOC->BSRR=0XFF;
EXTI->PR|=(1<<3);
}
void EXTI4_IRQHandler()
{
delay(600000);
GPIOC->BRR=0XFF;
delay(600000);
GPIOC->BSRR=0XFF;
delay(600000);
GPIOC->BRR=0XFF;
delay(600000);
GPIOC->BSRR=0XFF;
EXTI->PR|=(1<<4);
}
|
|