OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2077|回复: 5

stm32 外部中断

[复制链接]

24

主题

54

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-8-14
在线时间
56 小时
发表于 2019-4-7 22:42:44 | 显示全部楼层 |阅读模式
15金钱
这是我的外部中断配置
[mw_shl_code=c,true]void VALVE_EXTI_Init()
{
       
        EXTI_InitTypeDef VALVE_EXTI_Initstructure;
        NVIC_InitTypeDef VALVE_NVIC_Initstruccture;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource5);
        VALVE_EXTI_Initstructure.EXTI_Line=EXTI_Line5;
        VALVE_EXTI_Initstructure.EXTI_LineCmd=ENABLE;
        VALVE_EXTI_Initstructure.EXTI_Mode=EXTI_Mode_Interrupt;
        VALVE_EXTI_Initstructure.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_Init(&VALVE_EXTI_Initstructure);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource6);
        VALVE_EXTI_Initstructure.EXTI_Line=EXTI_Line6;
        VALVE_EXTI_Initstructure.EXTI_Mode=EXTI_Mode_Interrupt;
        VALVE_EXTI_Initstructure.EXTI_Trigger=EXTI_Trigger_Falling;
        VALVE_EXTI_Initstructure.EXTI_LineCmd=ENABLE;
        EXTI_Init(&VALVE_EXTI_Initstructure);
       
        VALVE_NVIC_Initstruccture.NVIC_IRQChannel=EXTI9_5_IRQn;
        VALVE_NVIC_Initstruccture.NVIC_IRQChannelPreemptionPriority=0x02;
        VALVE_NVIC_Initstruccture.NVIC_IRQChannelSubPriority=0x02;
        VALVE_NVIC_Initstruccture.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&VALVE_NVIC_Initstruccture);
       


       
}

void EXTI9_5IRQHandler(void)
{
               
        if(EXTI_GetFlagStatus(EXTI_Line5) !=RESET)
        {
                if(VALVE_IS_OPEN())
                {
                        VALVE_STOP();
                }
               
                EXTI_ClearFlag(EXTI_Line5);
        }
        if(EXTI_GetFlagStatus(EXTI_Line6) !=RESET)
        {
                if(VALVE_IS_CLOSE())
                {
                        VALVE_STOP();
                }
               
               
                EXTI_ClearFlag(EXTI_Line6);
        }
}

int main(void)
{       
        valve_Init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        VALVE_EXTI_Init();
        VALVE_OPEN();
               
}
[/mw_shl_code]


大概的意思是  触发中断后就电机停下来,但是 当触发外部按键时,,并没有触发中断

最佳答案

查看完整内容[请看2#楼]

IO 初始化的PB5和PB6,中断用的PE5和PE6。不知道是不是这个原因。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2019-1-21
在线时间
2 小时
发表于 2019-4-7 22:42:45 | 显示全部楼层
yyclown 发表于 2019-4-7 22:45
这个是我的初始化和主函数代码,,不知道是忽略了什么。 请指教

IO 初始化的PB5和PB6,中断用的PE5和PE6。不知道是不是这个原因。
回复

使用道具 举报

24

主题

54

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-8-14
在线时间
56 小时
 楼主| 发表于 2019-4-7 22:44:41 | 显示全部楼层
[mw_shl_code=c,true]void valve_Init()
{
                GPIO_InitTypeDef GPIO_Valve_InitInstructure;
                GPIO_InitTypeDef GPIO_test_valve_Initstructure;  
       
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
                GPIO_DeInit(GPIOB);
                delay_init();
                GPIO_Valve_InitInstructure.GPIO_Mode=GPIO_Mode_Out_PP;
                GPIO_Valve_InitInstructure.GPIO_Pin=GPIO_Pin_9;
                GPIO_Valve_InitInstructure.GPIO_Speed=GPIO_Speed_50MHz;
                GPIO_Init(GPIOB,&GPIO_Valve_InitInstructure);
               
                GPIO_Valve_InitInstructure.GPIO_Mode=GPIO_Mode_Out_PP;
                GPIO_Valve_InitInstructure.GPIO_Pin=GPIO_Pin_7;
                GPIO_Valve_InitInstructure.GPIO_Speed=GPIO_Speed_50MHz;
                GPIO_Init(GPIOB,&GPIO_Valve_InitInstructure);
       
                GPIO_Valve_InitInstructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
                GPIO_Valve_InitInstructure.GPIO_Pin=GPIO_Pin_6;
                GPIO_Init(GPIOB,&GPIO_Valve_InitInstructure);
               
                GPIO_Valve_InitInstructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
                GPIO_Valve_InitInstructure.GPIO_Pin=GPIO_Pin_5;
                GPIO_Init(GPIOB,&GPIO_Valve_InitInstructure);
               
               
               
}
[/mw_shl_code]
回复

使用道具 举报

24

主题

54

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-8-14
在线时间
56 小时
 楼主| 发表于 2019-4-7 22:45:22 | 显示全部楼层
这个是我的初始化和主函数代码,,不知道是忽略了什么。 请指教
回复

使用道具 举报

24

主题

54

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-8-14
在线时间
56 小时
 楼主| 发表于 2019-4-8 14:13:13 | 显示全部楼层
Changewind 发表于 2019-4-7 23:59
IO 初始化的PB5和PB6,中断用的PE5和PE6。不知道是不是这个原因。

您好,那个地方确实是我的失误,但是更改之后,中断还是不能被触发
回复

使用道具 举报

24

主题

54

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-8-14
在线时间
56 小时
 楼主| 发表于 2019-4-8 17:35:41 | 显示全部楼层
找到原因了,是因为用的战舰V3的开发板,引脚不能当普通IO口
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 22:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表