//配置按鈕中斷線觸發(fā)方式設(shè)置中斷配置結(jié)構(gòu)體成員
EXTI_InitStructure.EXTI_Line=EXTI_Line6;//選擇外部中斷線EXTI_Line0~EXTI_Line18共19根線
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//設(shè)置為中斷請求,可以為EXTI_Mode_Interrupt中斷請求或者
//EXTI_Mode_Event事件請求
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//觸發(fā)方式下降沿觸發(fā)還可以為EXTI_Trigger_Rising上升沿觸發(fā)或者
//EXTI_Trigger_Rising_Falling上升沿下降沿觸發(fā)
EXTI_InitStructure.EXTI_LineCmd=ENABLE;//中斷線使能ENABLE使能,DISABLE失能
EXTI_Init(&EXTI_InitStructure);//根據(jù)參數(shù)結(jié)構(gòu)體初始化EXTI中斷
EXTI_GenerateSWInterrupt(EXTI_Line6);//產(chǎn)生一個軟件中斷EXTI_Line6中斷允許
//到此中斷配置完成,可以寫中斷處理函數(shù)。
while(1)
{
}
}
voidRCC_Configuration(void)
{
//復(fù)位RCC外部設(shè)備寄存器到默認值
RCC_DeInit();
//打開外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速時鐘準(zhǔn)備好
HSEStartUpStatus=RCC_WaitForHSEStartUp();
//外部高速時鐘已經(jīng)準(zhǔn)別好
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
//配置AHB(HCLK)時鐘=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2(PCLK2)鐘=AHB時鐘
RCC_PCLK2Config(RCC_HCLK_Div1);
//配置APB1(PCLK1)鐘=AHB1/2時鐘
RCC_PCLK1Config(RCC_HCLK_Div2);
//配置ADC時鐘=PCLK21/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//配置PLL時鐘==外部高速晶體時鐘*98MHz*9MHz=72MHz
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
//配置ADC時鐘=PCLK2/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//使能PLL時鐘
RCC_PLLCmd(ENABLE);
//等待PLL時鐘就緒
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}
//配置系統(tǒng)時鐘=PLL時鐘
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//檢查PLL時鐘是否作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource()!=0x08)
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB
|RCC_APB2Periph_AFIO,ENABLE);
//使能GPIOA,GPIOB和AFIO的APB2
}
voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;//定義配置GPIO的結(jié)構(gòu)體
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//選中第8個腳
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
GPIO_Init(GPIOB,&GPIO_InitStructure);//用配置好的結(jié)構(gòu)體初始化GPIOBPB8用于驅(qū)動led
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//選中6腳
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//配置浮空輸入
GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOBPB6腳連接外部中斷線6的中斷源
//所有的端口都有外部中斷的能力,為了使用外部中斷線,端口必須配置為輸入模式
}
評論