参考安富莱的教程,记录狂暴模式下的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的时钟相同
