使用Event Recoder 调试

参考安富莱的教程,记录狂暴模式下的EventRecoder功能

1.添加EventRecoder

开启EventRecoder功能,STDOUT选择EVR

2

3

EventCoder.h文件中配置

4.Keil配置

将IRAM1分配一部分空间给IRAM2.IRAM2勾选为NoInit

5

选择为IRAM2

6添加代码

c 复制代码
int main(void)
{

  /* USER CODE BEGIN 1 */
	EventRecorderInitialize(EventRecordAll, 1U);
	EventRecorderStart();
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
c 复制代码
// LED闪烁任务
void LED_Task(void)
{
//	SEGGER_RTT_printf(0,"LED_Task is Running, tick is %llu \r\n", get_system_time_64());
	printf("LED_Task is Running, tick is %llu \r\n", get_system_time_64());
}

// 按键扫描任务
void KeyScan_Task(void)
{
//  SEGGER_RTT_printf(0,"keyScan_task is Running, tick is %llu \r\n", get_system_time_64());
	printf("keyScan_task is Running, tick is %llu \r\n", get_system_time_64());
}

// 数据处理任务
void DataProcess_Task(void)
{
// SEGGER_RTT_printf(0,"DataProcess_Task is Running, tick is %llu \r\n", get_system_time_64());
	printf("DataProcess_Task is Running,tick is %llu \r\n", get_system_time_64());
}

// 显示任务
void Display_Task(void)
{
//	SEGGER_RTT_printf(0,"Display_Task is Running, tick is %llu \r\n", get_system_time_64());
	printf("Display_Task is Running, tick is %llu \r\n", get_system_time_64());
}

并且勾选使用微库

测试

可以看到正确被打印

使用时间测量功能


需要注意的是仿真器的trace的时钟要和mcu的时钟相同

相关推荐
进击的小头15 小时前
第6篇:嵌入式芯片算力核心来源:多级流水线架构与指令并行机制详解
单片机·嵌入式硬件·架构
jacklood15 小时前
煤矿用甲烷报警仪的性能试验具体方法
单片机·嵌入式硬件·煤矿电子
不做无法实现的梦~15 小时前
px4仿真和示例运行
单片机·嵌入式硬件
世微 如初16 小时前
AP5125 宽压大功率 LED 恒流驱动器:技术参数与应用设计指南
stm32·单片机·嵌入式硬件
不怕犯错,就怕不做16 小时前
rk3562 buildrooot编译更新的lib库push后无效问题分析
linux·驱动开发·嵌入式硬件
EVERSPIN17 小时前
高性能32位MCU在热敏打印机上的应用
单片机·嵌入式硬件·mcu·32位mcu
心语星愿1117 小时前
单片机架构:CPU、存储器与外设的协同原理
单片机·嵌入式硬件·架构
弄曲幽篁17 小时前
stm32 USB虚拟串口
stm32·单片机·嵌入式硬件
学嵌入式的小杨同学17 小时前
STM32 进阶封神之路(四十一)FreeRTOS 中断管理、软件定时器、内存管理与低功耗模式|工业级实战完整版
vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件·嵌入式实时数据库
蜕变的小白17 小时前
☆嵌入式硬件的学习 :51单片机 知识总结
单片机·嵌入式硬件·51单片机