测试STM32H7进出中断的速度能跑到12.5MHz,所有程序在TCM和Flash运行没差别
1、开启最高等级优化和时间优化。2、测试下面情况下,性能没差别
(1)程序在Flash运行,变量在DTCM,开启Cache。
(2)程序和变量都在DTCM运行
测试中断:
/*
*********************************************************************************************************
* 函 数 名: TIM6_DAC_IRQHandler
* 功能说明: TIM6定时中断服务程序
* 返 回 值: 无
*********************************************************************************************************
*/
void TIM6_DAC_IRQHandler(void)
{
TIM6->SR = ~TIM_FLAG_UPDATE;
//GPIOB->ODR ^= GPIO_PIN_1;
HC574_TogglePin(GPIO_PIN_23);
}
IO翻转10MHz,方波频率5MHz:
IO翻转12.5MHz,方波频率6.25MHz:
这个没有1052快哦 tianyekpsex 发表于 2018-12-14 10:01
这个没有1052快哦
是的,这个是纯跑主频了。 使用QSPI的FLASH跑速度是什么样子的呢? gpfrank 发表于 2018-12-14 19:40
使用QSPI的FLASH跑速度是什么样子的呢?
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89720&highlight=QSPI 你好,硬汉,H7定时器中断服务函数里面,如果加上条件判断,能做4M的io控制电平吗 你的方法太啰嗦,并不高效 只要干不死就学 发表于 2021-4-22 15:20
你好,硬汉,H7定时器中断服务函数里面,如果加上条件判断,能做4M的io控制电平吗
可以的。主频开到最高480MHz。程序尽可能的简单。 laofa 发表于 2021-4-22 21:14
你的方法太啰嗦,并不高效
欢迎补充高效方案:handshake eric2013 发表于 2021-4-23 08:37
欢迎补充高效方案
你的方法是读-修改-写,当然会浪费很多时间,要用只写不读的方法,并且用空间换时间,尽可能减少跳转。例如:
GPIOB->BSRR = GPIO_PIN_1;
GPIOB->BSRR = GPIO_PIN_1<<16;
GPIOB->BSRR = GPIO_PIN_1;
GPIOB->BSRR = GPIO_PIN_1<<16;
GPIOB->BSRR = GPIO_PIN_1;
GPIOB->BSRR = GPIO_PIN_1<<16;
GPIOB->BSRR = GPIO_PIN_1;
GPIOB->BSRR = GPIO_PIN_1<<16;
还有你用定时器中断也是会大幅消耗时间的,因为要压栈出栈,要好多个周期。实际还要看编译器如何处理了。 laofa 发表于 2021-4-26 19:51
你的方法是读-修改-写,当然会浪费很多时间,要用只写不读的方法,并且用空间换时间,尽可能减少跳转。例 ...
谢谢。
我以为你要说的是其它高级玩法。这个测得就是我们平时常用玩法下中断的进出速度。
laofa 发表于 2021-4-26 19:51
你的方法是读-修改-写,当然会浪费很多时间,要用只写不读的方法,并且用空间换时间,尽可能减少跳转。例 ...
H7这样操作GPIO的话,翻转速度极限是16.67Mhz 中断性能非常好,而且有Cache,即使在QSPI中,重复中断肯定能跑满速度 这样测对吗?:shutup: H7 cpu要操作io口好像要夸两个总线所以会很慢..... :shutup:最佳的方法应该是使用计数器吧,在开启中断之后开启计数器,中断来了之后直接关闭所有中断,获取计数器的值这样应该会非常准确。H7用CPU操作IO需要跨两个总线,实际while循环操作的话,H7还不如F4快:funk: 2859932063 发表于 2023-9-16 16:11
最佳的方法应该是使用计数器吧,在开启中断之后开启计数器,中断来了之后直接关闭所有中断,获取计 ...
这个 HC574_TogglePin(GPIO_PIN_23);是FMC扩展IO测试的,这个扩展IO支持50MHz翻转。
不是GPIO。
能把CATCH 关掉试试? yunqi 发表于 2023-9-22 09:36
能把CATCH 关掉试试?
关闭Cache没测。 eric2013 发表于 2023-9-16 16:19
这个 HC574_TogglePin(GPIO_PIN_23);是FMC扩展IO测试的,这个扩展IO支持50MHz翻转。
不是GPIO。
硬汉哥,你看这么理解对不,STM32H743 实际进出中断最快的速率差不多就是12.5Mhz,主要是因为要压栈、出栈。你这个测试如果换成翻转GPIO,不是FMC 扩展IO口,应该速度还会下降。
页:
[1]