基于ESP-IDF4.1
1 #include 2 #include 3 #include 4 #include 'esp_timer.h' 5 #include 'esp_log.h' 6 #include 'esp_sleep.h' 7 #include 'sdkconfig.h' 8 9 #include 'perfmon.h' 10 11 static const char* TAG = 'example'; 12 13 static void exec_test_function(void *params) 14 { 15 for (int i = 0 ; i < 100 ; i++) { 16 __asm__ __volatile__(' nop'); 17 } 18 } 19 20 //具有专用性能计数器的表 21 static uint32_t pm_check_table[] = { 22 XTPERF_CNT_CYCLES, XTPERF_MASK_CYCLES, // 周期合计 23 XTPERF_CNT_INSN, XTPERF_MASK_INSN_ALL, // 指令合计 24 XTPERF_CNT_D_LOAD_U1, XTPERF_MASK_D_LOAD_LOCAL_MEM, // 内存读取 25 XTPERF_CNT_D_STORE_U1, XTPERF_MASK_D_STORE_LOCAL_MEM, // 内存写入 26 XTPERF_CNT_BUBBLES, XTPERF_MASK_BUBBLES_ALL &(~XTPERF_MASK_BUBBLES_R_HOLD_REG_DEP), // 等待其他原因 27 XTPERF_CNT_BUBBLES, XTPERF_MASK_BUBBLES_R_HOLD_REG_DEP, // 等待寄存器依赖 28 XTPERF_CNT_OVERFLOW, XTPERF_MASK_OVERFLOW, // 最后一个测试周期 29 }; 30 31 #define TOTAL_CALL_AMOUNT 200 32 #define PERFMON_TRACELEVEL -1 // -1 - 忽略跟踪级别 33 34 void app_main(void) 35 { 36 ESP_LOGI(TAG, 'Start'); 37 ESP_LOGI(TAG, 'Start test with printing all available statistic'); 38 xtensa_perfmon_config_t pm_config = {}; 39 pm_config.counters_size = sizeof(xtensa_perfmon_select_mask_all) / sizeof(uint32_t) / 2; 40 pm_config.select_mask = xtensa_perfmon_select_mask_all; 41 pm_config.repeat_count = TOTAL_CALL_AMOUNT; 42 pm_config.max_deviation = 1; 43 pm_config.call_function = exec_test_function; 44 pm_config.callback = xtensa_perfmon_view_cb; 45 pm_config.callback_params = stdout; 46 pm_config.tracelevel = PERFMON_TRACELEVEL; 47 xtensa_perfmon_exec(&pm_config); 48 49 ESP_LOGI(TAG, 'Start test with user defined statistic'); 50 pm_config.counters_size = sizeof(pm_check_table) / sizeof(uint32_t) / 2; 51 pm_config.select_mask = pm_check_table; 52 pm_config.repeat_count = TOTAL_CALL_AMOUNT; 53 pm_config.max_deviation = 1; 54 pm_config.call_function = exec_test_function; 55 pm_config.callback = xtensa_perfmon_view_cb; 56 pm_config.callback_params = stdout; 57 pm_config.tracelevel = PERFMON_TRACELEVEL; 58 59 xtensa_perfmon_exec(&pm_config); 60 61 ESP_LOGI(TAG, 'The End'); 62 }
上一篇:ESP32-任务看门狗笔记
下一篇:ESP32高分辨率计时器笔记
推荐阅读最新更新时间:2026-03-24 23:36
- 支持 BLE 连接、由 4mA 至 20mA 电流回路供电的现场发送器参考设计
- AM2DM-0515DH60-NZ ±15 Vout、2W 双路输出 DC-DC 转换器的典型应用
- LTC6261IDC 音频耳机桥式驱动器运算放大器的典型应用
- LTC1775CS 2.5V/5A 可调输出降压稳压器的典型应用电路
- AD8601ARTZ-REEL7 符合 PC100 标准的线路输出放大器的典型应用
- 一种基于分立的 315MHz 振荡器解决方案,用于使用 BFR182 射频双极晶体管的远程无钥匙进入系统
- 使用 ROHM Semiconductor 的 BD49E39G-TR 的参考设计
- AM30EW-2405SZ 5V 三路输出 DC/DC 转换器的典型应用
- LTC3564 的电池在 1.2A 应用中达到 1.2V
- AL1676EV2,基于 AP1676 高亮度降压 LED 驱动控制器的评估板
- 格创东智SEMICON CHINA 2026圆满收官,章鱼智脑与全场景智能体群定义工业智能决策新高度
- 当变压器进入封装:TI IsoShield如何改写隔离电源边界
- 2026年1月座舱域控迎新一轮洗牌,华为、小米上位,比亚迪电子承压
- SK Signet推出400kW一体式超快速电动汽车充电器
- 智元机器人第1万台人形机器人A3量产下线,全球市场份额领先
- 雷诺和RMC BFM推出人工智能个性化车载收音机
- Diodes推出符合汽车级标准的100V PowerDI®8080-5封装MOSFET
- 保时捷申请线控换挡系统专利 兼具自动变速箱和手动变速箱功能
- 汽车以太网的11大误区
- 如何将自动驾驶大模型庞大的能力压缩到车端?

【Follow me第三季第3期】代码
【Follow me第三季第3期】XIAO ESP32S3任务代码提交
Follow me第三季第3期源代码
MOSFET和GaN FET应用手册
LMH6672LDX/NOPB
PSD953F4-15M






京公网安备 11010802033920号