打印

STM32外部中断响应远大于12时钟?

[复制链接]
5665|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
coyote|  楼主 | 2013-2-21 22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道是否是没配置好,使用STM32L151,IO从示波器是可以以33ns的速度翻转,也就是MCU以及IO的总线速度是32MHZ
按道理应该33nS*12=396nS再加上各种RP值,怎么也应该也小于1uS吧,但使用实际示波器观测,发现在外部上升沿后3uS以上的时间才进中断!
中断的周期是10uS,除了这个外部中断没有用到其他中断。
初始化设置如下
//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);
}
中断服务如下,也就是靠示波器观察IO跳变来判断什么时候进入中断
void EXTI2_IRQHandler(void)
{
  GPIOA->BSRRH = GPIOA->BSRRL = (1<<8);
  if(EXTI->PR & EXTI_Line2)
  {
        EXTI->PR = EXTI_Line2;//清中断
  }
}
请教各位大大
沙发
coyote|  楼主 | 2013-2-22 08:58 | 只看该作者
自顶

使用特权

评论回复
板凳
coyote|  楼主 | 2013-2-22 09:25 | 只看该作者
接错线,现在是八百纳秒进中断

使用特权

评论回复
地板
IJK| | 2013-2-22 09:37 | 只看该作者
LZ最好把示波器图片贴出来,这样才好判断。

使用特权

评论回复
5
IJK| | 2013-2-22 11:06 | 只看该作者
coyote 发表于 2013-2-22 09:25
接错线,现在是八百纳秒进中断

差不多了。
但感觉应该在600ns左右或者更少:进中断+翻IO的时间。

使用特权

评论回复
6
shuai37zhang| | 2013-6-27 14:34 | 只看该作者
才接触,刚刚试了,IO翻转速度为2us左右,怎么提高啊

使用特权

评论回复
7
hawksabre| | 2013-6-27 18:58 | 只看该作者
管脚接错   这个是有可能的    楼主  

使用特权

评论回复
8
火箭球迷| | 2013-6-27 19:10 | 只看该作者
IJK 发表于 2013-2-22 09:37
LZ最好把示波器图片贴出来,这样才好判断。

示波器的图片贴出来看看

使用特权

评论回复
9
baidudz| | 2013-6-27 19:17 | 只看该作者
时间应该不会这么长

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

粉丝