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

[复制链接]
6351|8
 楼主| coyote 发表于 2013-2-21 22:52 | 显示全部楼层 |阅读模式
不知道是否是没配置好,使用STM32L151,IO从示波器是可以以33ns的速度翻转,也就是MCU以及IO的总线速度是32MHZ
按道理应该33nS*12=396nS再加上各种RP值,怎么也应该也小于1uS吧,但使用实际示波器观测,发现在外部上升沿后3uS以上的时间才进中断!
中断的周期是10uS,除了这个外部中断没有用到其他中断。
初始化设置如下
  1. //BUSY_IO中断配置
  2. void BUSY_I0_Config(void)
  3. {
  4.         GPIO_InitTypeDef   GPIO_InitStructure1;
  5.         NVIC_InitTypeDef   NVIC_InitStructure1;
  6.         EXTI_InitTypeDef   EXTI_InitStructure1;
  7.         /* Configure PA0 pin as input floating */
  8.         GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;
  9.         GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_UP;
  10.         GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_40MHz;
  11.         GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_2;
  12.         GPIO_Init(GPIOA, &GPIO_InitStructure1);

  13.         /* Enable SYSCFG clock */
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  15.         /* Connect EXTI0 Line to PA0 pin */
  16.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);

  17.         /* Configure EXTI0 line */
  18.         EXTI_InitStructure1.EXTI_Line = EXTI_Line2;
  19.         EXTI_InitStructure1.EXTI_Mode = EXTI_Mode_Interrupt;
  20.         EXTI_InitStructure1.EXTI_Trigger = EXTI_Trigger_Rising;  
  21.         EXTI_InitStructure1.EXTI_LineCmd = ENABLE;
  22.         EXTI_Init(&EXTI_InitStructure1);

  23.         /* Enable and set EXTI0 Interrupt to the lowest priority */
  24.         NVIC_InitStructure1.NVIC_IRQChannel = EXTI2_IRQn;
  25.         NVIC_InitStructure1.NVIC_IRQChannelPreemptionPriority = 0;
  26.         NVIC_InitStructure1.NVIC_IRQChannelSubPriority = 0;
  27.         NVIC_InitStructure1.NVIC_IRQChannelCmd = ENABLE;
  28.         NVIC_Init(&NVIC_InitStructure1);
  29. }
中断服务如下,也就是靠示波器观察IO跳变来判断什么时候进入中断
  1. void EXTI2_IRQHandler(void)
  2. {
  3.   GPIOA->BSRRH = GPIOA->BSRRL = (1<<8);
  4.   if(EXTI->PR & EXTI_Line2)
  5.   {
  6.         EXTI->PR = EXTI_Line2;//清中断
  7.   }
  8. }
请教各位大大
 楼主| coyote 发表于 2013-2-22 08:58 | 显示全部楼层
 楼主| coyote 发表于 2013-2-22 09:25 | 显示全部楼层
接错线,现在是八百纳秒进中断
IJK 发表于 2013-2-22 09:37 | 显示全部楼层
LZ最好把示波器图片贴出来,这样才好判断。
IJK 发表于 2013-2-22 11:06 | 显示全部楼层
coyote 发表于 2013-2-22 09:25
接错线,现在是八百纳秒进中断

差不多了。
但感觉应该在600ns左右或者更少:进中断+翻IO的时间。
shuai37zhang 发表于 2013-6-27 14:34 | 显示全部楼层
才接触,刚刚试了,IO翻转速度为2us左右,怎么提高啊
hawksabre 发表于 2013-6-27 18:58 | 显示全部楼层
管脚接错   这个是有可能的    楼主  
火箭球迷 发表于 2013-6-27 19:10 | 显示全部楼层
IJK 发表于 2013-2-22 09:37
LZ最好把示波器图片贴出来,这样才好判断。

示波器的图片贴出来看看
baidudz 发表于 2013-6-27 19:17 | 显示全部楼层
时间应该不会这么长
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

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