STM32/STM8技术william hill官网
直播中

杨帆

7年用户 1367经验值
私信 关注
[问答]

请问STM32F103的外中断响应时间多长?



手册等资料说是6个周期,但是我在72M时钟下运行时发现基本上在1us左右。也就是72周期。

测试方法是用示波器观察比较外输出信号下降沿和中断程序起始执行时间差,我在中断程序内加了个端口输出高和低,每次进中断就会输出一次。

目前已经排除因素有:
1 无其他中断
2 外中断服务函数执行顺序
3 输出引脚速度
4 时钟设置
更新:刚刚找到个中断没关,屏蔽后时间下降到400ns,但是感觉还是偏大了些。

回帖(6)

郑婷婷

2018-12-6 09:51:59
没认真研究过,是什么实时性要求很高的应用吗
举报

庄金樱

2018-12-6 10:07:26
没测试过
举报

孙婷婷

2018-12-6 10:12:57
IO设置为50Mhz的试试。
举报

杨帆

2018-12-6 10:32:03
IO速度配置为HIGH了,IO操作方式尝试过位带和端口寄存器置位和清除,速度差不多
举报

孙缅禧

2018-12-6 10:46:31
我使用tim1测量的结果是0x36个时钟周期
测试代码如下:
void EXTI0_IRQHandler(void)
{
        volatile uint32_t i=0;
        TIM_Cmd(TIM1,DISABLE);
        i++;
        TIM_SetCounter(TIM1,0x0);
        TIM_Cmd(TIM1,ENABLE);
}


进了中断后不清楚中断标志位,tim1 的配置是无div 无预分频,时钟为72MHz,sysclok=72MHz
举报

孙缅禧

2018-12-6 10:57:38
引用: 分修一班人 发表于 2018-12-6 20:42
我使用tim1测量的结果是0x36个时钟周期
测试代码如下:
void EXTI0_IRQHandler(void)

volatile uint32_t j=0;
void EXTI0_IRQHandler(void)
{

        //TIM_Cmd(TIM1,DISABLE);
           TIM1->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN));

        j++;
        TIM_SetCounter(TIM1,0x0);
        //TIM_Cmd(TIM1,ENABLE);
         TIM1->CR1 |= TIM_CR1_CEN;
}

这样测的结果是0x27
举报

更多回帖

发帖
×
20
完善资料,
赚取积分