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

2019-07-14 15:26发布



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

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

目前已经排除因素有:
1 无其他中断
2 外中断服务函数执行顺序
3 输出引脚速度
4 时钟设置
更新:刚刚找到个中断没关,屏蔽后时间下降到400ns,但是感觉还是偏大了些。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
vuweurvxs
1楼-- · 2019-07-14 20:26
没测试过
TOPCB
2楼-- · 2019-07-15 01:09
IO设置为50Mhz的试试。
HengDu
3楼-- · 2019-07-15 05:25
 精彩回答 2  元偷偷看……
分修一班人
4楼-- · 2019-07-15 07:26
我使用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
分修一班人
5楼-- · 2019-07-15 12:22
分修一班人 发表于 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

一周热门 更多>