你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Stm32L1XX芯片无法设置中断,求大神指点一二,熬夜熬不动...

[复制链接]
zwl3615473 提问时间:2015-9-29 00:58 /
各位大神。最近在折腾nucleo板子,型号为L152RE。网上的资料少的可怜。现在想用库开发。目前,想利用上面的按键来学习外部中断,可惜GPIO库中没有GPIO_EXTILineConfig。这就遇到了严重的问题了,折腾到现在都没办法用中断,真是郁闷!而且这款芯片的寄存器和F103的还不一样,太别扭了!求大神指点一二。
我把程序中要解决的位置标注出来了,求解决;我还想知道,这个中断线(EXTI_Line)是怎么设置的?是从EXTICR这个寄存器设置的吗?


下面是我的程序:


#include"stm32l1xx.h"
#include"stm32l1xx_it.h"
volatile uint32_t msTicks;
void  GPIO_Configuration()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        
        
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_SetBits(GPIOC,GPIO_Pin_13);
}
void EXTI_Configuration()
{
        EXTI_InitTypeDef EXTI_InitStructure;
        SYSCFG->EXTICR[3]|=0X00000020;//我想用这个设置GPIO口与中断线的映射,但是这个根据寄存器设置的,居然没有任何用!
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising_Falling;
        EXTI_InitStructure.EXTI_Line =EXTI_Line13;//按键在PC13上
        EXTI_InitStructure.EXTI_LineCmd =ENABLE;
        EXTI_Init(&EXTI_InitStructure);
        
}
void NVIC_Configuration()
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
        NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        
        
}
void Delay (uint32_t dlyTicks)
{
  uint32_t curTicks;
  curTicks = msTicks;
  while ((msTicks - curTicks) < dlyTicks) { __NOP(); }
}
void EXTI15_10_IRQHandler()
{
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        EXTI_ClearITPendingBit(EXTI_Line13);
}
int main()
{
        SystemInit();
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);//是否缺少需要的时钟?
        GPIO_Configuration();
        SysTick_Config(SystemCoreClock / 1000);
        EXTI_Configuration();
        NVIC_Configuration();
        while(1)
        {
//                GPIO_ResetBits(GPIOA,GPIO_Pin_5);
//                Delay(500);
//                GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                Delay(500);
               
        }
        
}

收藏 评论6 发布时间:2015-9-29 00:58

举报

6个回答
yanhaijian 回答时间:2015-9-29 08:22:30
可怜的娃啊。
JackieLaura 回答时间:2015-9-29 09:09:51
应该可以参考F0的代码吧,寄存器可能差不多
stmcu.org.png
你好我好大家好! 回答时间:2015-9-29 14:40:32
帮顶                              
zwl3615473 回答时间:2015-9-29 15:43:20
JackieLaura 发表于 2015-9-29 09:09
应该可以参考F0的代码吧,寄存器可能差不多

非常感谢谢谢回复!
chifen 回答时间:2015-9-29 16:05:09
我不知道你用的是什么库  你可以用  STM32CubeMX 软件生成一个中断
党国特派员 回答时间:2015-9-29 17:05:36
本帖最后由 党国特派员 于 2015-9-29 17:11 编辑

没有看到 NVIC_EnableIRQ(EXTI15_10_IRQn) 呢?

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版