程序员开发实例大全宝库

网站首页 > 编程文章 正文

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

zazugpt 2024-08-30 04:41:31 编程文章 21 ℃ 0 评论

在嵌入式项目中,中断响应速度不仅影响整个系统性能,如果处理不好,也有可能造成潜在的不容易被发现的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,另外,编译器的优化也有作用,能改善中断响应性能。当然,本文不是一个严谨的测试,仅可作为大家一个定性的参考。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表