本人ARM菜鸟一个,自己画PCB做了一块板子,芯片用的是STM32F103VBT6。最近看例程想做一个外部中断控制LED亮灭的程序。由于自己制的板子,GPIO引出的不多,现有PE14接LED阴极,PC1引出悬空。想利用PC1接电源或地来控制LED亮和灭。但丝毫没反应,程序代码如下,忘高手指正: void All_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);
//PA1、PA8配置为上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PA1、PA8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
//上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//50M时钟速度
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void EXTI_Config(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource1);
//PA1作为外部中断线1引脚
EXTI_ClearITPendingBit(EXTI_Line1);
//清除1线标志位
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
//边沿触发
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
//根据以上参数初始化结构体
}
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //采用组别2
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;//配置外部中断1
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先式优先级设置为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //副优先级设置为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//中断使能
NVIC_Init(&NVIC_InitStructure);//中断初始化
}
int main(void)
{
SystemInit(); //系统初始化
All_GPIO_Config();//所有GPIO配置
EXTI_Config();//外部中断配置
NVIC_Config();//中断优先级配置
while(1);
}
顺便求助一下,NVIC_Config里面的 组别、主副优先级设置有什么讲究?菜鸟一枚,求大神赐教,不胜感激!
} |