外部中断响应延时
图1. 外部中断响应的测试波形
将频率为50kHz的PWM信号输入ESP32的GPIO口,使能该GPIO口的外部中断功能,在中断函数中,翻转另一个GPIO口电平,用于测试。
使用逻辑分析仪抓取这两个GPIO口的信号,上图的绿色通道为50KHz的输入信号,蓝色通道为中断函数中用于测试GPIO口电平翻转信号;
两个信号的边缘时间差为2us,
在一段比较长的时间段内,两个通道的脉冲数一样,均为161521个脉冲,可见,ESP32的SDK或者是外设模块的运行不会影响50kHz以内的外部中断的响应。
结论:
中断响应延时时间约为2us,
50KHz以内的外部输入中断可以被快速、可靠地响应
中断优先级
同时使能1ms的定时器中断以及频率为50KHz的外部输入中断,
在1ms的定时器中断程序中,翻转第1个GPIO口,同时循环延时翻转第2个GPIO口的电平,输出若干个测试脉冲之后,再退中中断程序;
在外部输入中断程序中,翻转第3个GPIO口的电平;
图2.定时器中断和外部中断的响应测试波形
蓝色通道为第3个GPIO口的波形,
绿色通道为第1个GPIO口的波形,
黄色通道为第3个GPIO口的波形,
当处理器运行定时器中断程序时,外部中断的测试GPIO口不会翻转电平,即不响应外部中断;
图3.定时器的周期测试
A1-A2 时间是983uS,B1-B2时间是936uS。
结论:
ESP32没有中断优先级;
中断的响应速度会受其其它中断的影响
测试浮点、乘除法运算的耗时
测试代码如下,通过该代码测试浮点除法运算,以及整数的乘、除法运算的耗时,
float a= 100.12;float b = 200.34;volatile float c;uint32_t a1 = 100;uint32_t b1 = 2006;uint32_t c1;gpio_on;for(i=0;i<100;i++){ c = a / b;}gpio_off;gpio_on;for(i=0;i<100;i++){ c1 = a1 / b1;}gpio_off;gpio_on;for(i=0;i<100;i++){ c2 = a2 * b2;}gpio_off;
图4. 测试算力的输出波形a
如上图,
A1-A2 对应为100次浮点数除法运算的耗时,为28.7us,单次浮点数除法运算耗时287ns;
B1-B2 对应为100次整数除法运算的耗时,为4.1us,单次整数除法运算耗时为41ns;
C1-C2 对应为100次整数乘法运算的耗时,为4.96us,单次整数除法运算耗时为49.6ns;
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/625127.html