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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版