OpenEdv-开源电子网

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

哪位高手帮忙看下程序,不知道哪里有错误?

[复制链接]

69

主题

216

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2012-3-21
在线时间
0 小时
发表于 2013-11-6 19:46:21 | 显示全部楼层 |阅读模式

 
下面代码实现的是,用PB0捕获下降沿中断,然后在中断程序中计数Pulse_N。但是,我调试发现一只不能进入中断函数void EXTI0_IRQHandler(void) 里,请问为什么,哪里写的不对吗?

.... .... 
 RCC_Config();
 GPIOConfig();
 NVICConfig();
 EXTIConfig();
.... ....


/***********************************/
void RCC_Config(void)
{
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
}

void GPIOConfig(void) /* 脉冲引脚配置 PB0  */
{
     GPIO_InitTypeDef GPIO_InitStructure;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /* 上拉输入 */
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; /* 脉冲引脚--PB0 */ 
     GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void NVICConfig(void)/* 嵌套中断配置 */
{
     NVIC_InitTypeDef NVIC_InitStructure;

     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 

     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;  /* 设置外部中断,此处使能外部中断0 */

     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);
}

void EXTIConfig(void)/* 外部中断配置 */
{
     EXTI_InitTypeDef EXTI_InitStructure;
     /* EXTI line(PB0) mode config */
     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); 
     EXTI_InitStructure.EXTI_Line = EXTI_Line0;
     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿中断
     EXTI_InitStructure.EXTI_LineCmd = ENABLE;
     EXTI_Init(&EXTI_InitStructure);
}

void EXTI0_IRQHandler(void)
{
     if(EXTI_GetITStatus(EXTI_Line0) != RESET) //确保是否产生了EXTI Line中断
     {  
          if(0 == GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)) 
          {
               Pulse_N++;
          }
          EXTI_ClearITPendingBit(EXTI_Line0);    //清除中断标志位
     }
}
/****************************/

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2013-10-26
在线时间
0 小时
发表于 2013-11-6 21:01:26 | 显示全部楼层
你把void EXTI0_IRQHandler(void)中第二个if判断去掉,直接执行Pulse_N++;试试。
回复 支持 反对

使用道具 举报

9

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-11-7 10:04:40 | 显示全部楼层
你先看看硬件有没有从高拉低
人需要沐浴阳光,也必将经历风雨
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 07:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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