使用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的时钟相同

相关推荐
wuyk5556 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
☆cwlulu7 小时前
调试排查工具介绍(gdb、strace、Valgrind等)
开发语言·c++·嵌入式硬件·ubuntu
lzqrzpt8 小时前
LED驱动电源选型标准与工程应用技术要点解析
python·单片机·嵌入式硬件·物联网
木子单片机9 小时前
基于51单片机的音乐彩灯设计
单片机·嵌入式硬件·51单片机·keil
hongmai6668889 小时前
ESP32-S2-MINI-2U-N4R2:一款为灵活部署而生的Wi-Fi MCU模组
人工智能·单片机·嵌入式硬件·物联网·智能家居
熙芯XiChip9 小时前
Modbus-RTU帧结构与功能码解析
单片机
电子工程师成长日记-C5110 小时前
51单片机录音笔(带闹钟)
单片机·嵌入式硬件·51单片机
传感器与混合集成电路11 小时前
电流频率转换模块选型要考虑哪些参数?量程匹配、精度等级与封装形式的综合决策
单片机·嵌入式硬件
JNX_SEMI11 小时前
AT2659 L1频段多模卫星导航低噪声放大器技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
KaifuZeng13 小时前
通信与接口协议面试四、SPI
单片机·嵌入式硬件·通信与接口协议