实测:stm32的中断响应到底有多快?

在嵌入式项目中,中断响应速度不仅影响整个系统性能,如果处理不好,也有可能造成潜在的不容易被发现的bug,今天有时间,测一测stm32的外部中断响应速度,看看stm32的中断响应到底有多快。

我使用的是的STM32F446, cortex-m4 内核,最高主频180MHz.

测量方法比较简单,使用PC10,PC11,PC12三个GPIO, PC10,PC12作为输出,PC11作为外部中断输入。

将PC10和PC11引脚用杜邦线连起来,PC10, PC12默认配置为输出低电平,上电延时几秒钟后,使PC10输出高电平,在PC11的中断响应函数中,将PC12置为高电平,通过测量PC10和PC12上升沿的时间差来得到STM32 F446的外部中断响应时间。

主频180MHz, 在PC11的中断响应函数中直接置高PC12

void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,GPIO_PIN_SET);
}

测量的中断响应时间为236ns,示波器截图如下:

主频180MHz,在STM32 的HAL库的回调函数中置高PC12,

void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
}
/* USER CODE BEGIN 1 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,GPIO_PIN_SET);
}

测量得到的中断响应时间为448ns,示波器截图如下:

主频90MHz,在STM32 的HAL库的回调函数中置高PC12。

测量得到的中断响应时间为736ns,示波器截图如下:

主频90MHz,在STM32 的HAL库的回调函数中置高PC12。开启编译器优化(从O0到O3),

测量的中断响应时间为632ns

结论:通过对比发现,使用HAL库的中断回调函数对中断响应时间影响较大,从236ns增加到了448ns,我们在项目中处理性能要求较高的场合,尽量不要用中断回调函数,主频对中断响应时间的影响也很大,频率降低一半后,响应时间从448ns增加到了736ns,另外,编译器的优化也有作用,能改善中断响应性能。当然,本文不是一个严谨的测试,仅可作为大家一个定性的参考。

展开阅读全文

页面更新:2024-05-07

标签:示波器   编译器   主频   截图   函数   测量   性能   速度   发现   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top