自从研究stm32以来,对mcu的运行速度一直没有一个明确的概念,困惑一直卡在这,很烦,最近有了一点心得,记录一下。
stm32的官方数据为1.25MIPS/MHZ,即每秒执行的汇编指令数应该是主频的1.25倍。
stm32f103 72M主频,所以一秒执行90M汇编指令,
stm32H743 480M主频,一秒的指令只会大于600M指令,因为有cache的存在。
执行一条c语言指令大概花费10~100ns(f103),那么H7的性能只会高于100/(480/72) = 15ns,因此,stm32 h7的性能至少为一秒50M的C语言指令。
stm32 f103的中断频率性能极限是500KHZ,H743的中断频率极限为12.5MHZ。
因此如果f103到了1K以上的中断频率也许就需要注意了,H743的则应该是10K。如果有些周期性中断中断频率达到了1K以上也许就应该重点注意它。
中断的触发实时的,在中断信号产生之后的一个时钟周期内(对应外设的内核时钟)中断状态寄存器就会被置位,因此中断信号的产生与被识别到基本是无时间差的,
中断寄存器在外设中,其触发nvic中断请求线,到mcu内核收到中断请求,这大概有一些时间差(很小,应该也可以忽略不计)。
mcu内核接收到中断请求,立刻开始处理中断,它需要
1.读取中断向量表,
2.跳转到中断处理函数,
3.保存寄存器,
4.读取中断函数里的第一条指令
直到开始执行,在内存零延迟的情况下(D-cache,I-cache, 即cpu在一个时钟周期内完成存取动作),这些时间统称为interrupt lentcy---中断延迟,
在《Cortex M3与M4权威指南》里明确为12个时钟周期。
关于H7的延时未查到,应该也是12个时钟周期吧。
标签:中断,cache,程序执行,stm32,指令,速率,f103,时钟 From: https://www.cnblogs.com/1234----/p/17786346.html