main.c
[mw_shl_code=c,true]#include"stm32f10x.h"
#include"stm32f10x_conf.h"
unsigned int time=0;
void ledinit()
{
GPIO_InitTypeDef gpioinit;
gpioinit.GPIO_Speed =GPIO_Speed_50MHz ;//GPIO_Speed_50MHz;
gpioinit.GPIO_Mode =GPIO_Mode_Out_PP;
gpioinit.GPIO_Pin =GPIO_Pin_1;
GPIO_Init(GPIOC,&gpioinit);
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
}
int main()
{
EXTI_InitTypeDef extiinit;
NVIC_InitTypeDef nvicinit;
GPIO_InitTypeDef gpioinit;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO ,ENABLE);//?ò??apb2?±?????????±??
ledinit();//?¨??led(c1)
gpioinit.GPIO_Mode =GPIO_Mode_IPU;
gpioinit.GPIO_Pin =GPIO_Pin_1;
GPIO_Init(GPIOE,&gpioinit);//E1×÷??????????????
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
nvicinit.NVIC_IRQChannel=EXTI1_IRQn;
nvicinit.NVIC_IRQChannelCmd =ENABLE;
nvicinit .NVIC_IRQChannelPreemptionPriority =1;
nvicinit.NVIC_IRQChannelSubPriority=1;
extiinit.EXTI_Line =EXTI_Line1;
extiinit.EXTI_LineCmd =ENABLE ;
extiinit.EXTI_Mode=EXTI_Mode_Interrupt;
extiinit.EXTI_Trigger =EXTI_Trigger_Falling ;
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource1);//????E1
EXTI_Init(&extiinit);
NVIC_Init(&nvicinit);
while(1);
}
[/mw_shl_code]
it.c
[mw_shl_code=c,true]void EXTI1_IRQHandler()
{
GPIO_SetBits(GPIOC,GPIO_Pin_1);
}[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[/mw_shl_code]
硬件上我没有给按键加上拉电阻,这应该不是问题所在吧应为stm32有内部上拉。我是想在按键后执行中断程序及点亮led,可是我现在上电后led直接就亮了[/mw_shl_code]
|