外部上升沿后3uS以上的时间才进中断

[复制链接]
1663|15
 楼主| lium 发表于 2014-10-30 09:14 | 显示全部楼层 |阅读模式
STM32L151,IO从示波器是可以以33ns的速度翻转,也就是MCU以及IO的总线速度是32MHZ
按道理应该33nS*12=396nS再加上各种RP值,怎么也应该也小于1uS吧,但使用实际示波器观测,发现在外部上升沿后3uS以上的时间才进中断!
 楼主| lium 发表于 2014-10-30 09:14 | 显示全部楼层
不知道是否是没配置好
guoyt 发表于 2014-10-30 09:16 | 显示全部楼层
中断的周期是多少
hanwe 发表于 2014-10-30 09:16 | 显示全部楼层
还有其他中断吗
 楼主| lium 发表于 2014-10-30 09:18 | 显示全部楼层
guoyt 发表于 2014-10-30 09:16
中断的周期是多少

中断的周期是10uS
 楼主| lium 发表于 2014-10-30 09:18 | 显示全部楼层
hanwe 发表于 2014-10-30 09:16
还有其他中断吗

除了这个外部中断没有用到其他中断。
yufe 发表于 2014-10-30 09:19 | 显示全部楼层
初始化设置发上来看看
 楼主| lium 发表于 2014-10-30 09:21 | 显示全部楼层
//BUSY_IO中断配置

void BUSY_I0_Config(void)

{

        GPIO_InitTypeDef   GPIO_InitStructure1;

        NVIC_InitTypeDef   NVIC_InitStructure1;

        EXTI_InitTypeDef   EXTI_InitStructure1;

        /* Configure PA0 pin as input floating */

        GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;

        GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_UP;

        GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_40MHz;

        GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_2;

        GPIO_Init(GPIOA, &GPIO_InitStructure1);

        /* Enable SYSCFG clock */

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

        /* Connect EXTI0 Line to PA0 pin */

        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);

        /* Configure EXTI0 line */

        EXTI_InitStructure1.EXTI_Line = EXTI_Line2;

        EXTI_InitStructure1.EXTI_Mode = EXTI_Mode_Interrupt;

        EXTI_InitStructure1.EXTI_Trigger = EXTI_Trigger_Rising;  

        EXTI_InitStructure1.EXTI_LineCmd = ENABLE;

        EXTI_Init(&EXTI_InitStructure1);

        /* Enable and set EXTI0 Interrupt to the lowest priority */

        NVIC_InitStructure1.NVIC_IRQChannel = EXTI2_IRQn;

        NVIC_InitStructure1.NVIC_IRQChannelPreemptionPriority = 0;

        NVIC_InitStructure1.NVIC_IRQChannelSubPriority = 0;

        NVIC_InitStructure1.NVIC_IRQChannelCmd = ENABLE;

        NVIC_Init(&NVIC_InitStructure1);

}
 楼主| lium 发表于 2014-10-30 09:21 | 显示全部楼层
中断服务如下,也就是靠示波器观察IO跳变来判断什么时候进入中断
 楼主| lium 发表于 2014-10-30 09:21 | 显示全部楼层
void EXTI2_IRQHandler(void)

{

  GPIOA->BSRRH = GPIOA->BSRRL = (1<<8);

  if(EXTI->PR & EXTI_Line2)

  {

        EXTI->PR = EXTI_Line2;//清中断

  }

}
llia 发表于 2014-10-30 09:24 | 显示全部楼层
接错线,现在是八百纳秒进中断
wangpe 发表于 2014-10-30 09:24 | 显示全部楼层
LZ最好把示波器图片贴出来,这样才好判断。
wangpe 发表于 2014-10-30 09:25 | 显示全部楼层
llia 发表于 2014-10-30 09:24
接错线,现在是八百纳秒进中断


差不多了。
但感觉应该在600ns左右或者更少:进中断+翻IO的时间。
langgq 发表于 2014-10-30 09:25 | 显示全部楼层
才接触,刚刚试了,IO翻转速度为2us左右,怎么提高啊
wangzsa 发表于 2014-10-30 09:27 | 显示全部楼层
管脚接错   这个是有可能的    楼主  
 楼主| lium 发表于 2014-10-30 09:28 | 显示全部楼层
那我检查下。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

915

主题

9578

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部