STM32+FreeRTOS 使用SystemView监控系统

这篇具有很好参考价值的文章主要介绍了STM32+FreeRTOS 使用SystemView监控系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文以STM32F407ZET6 + FreeRTOS V9.0作为演示,其它的Cortex M芯片同样可以参考此文,其他内核和RTOS理论上也支持,本文暂时不做研究。

所以开始阅读本文前,需要一块能运行FreeRTOS的Cortex M芯片,如果没有移植好操作系统,可以参考我的另一篇文章《STM32F103移植FreeRTOS完整过程》

本文打包提供FreeRTOS V9.0源码SystemView安装包STM32F407ZET6示例工程,在文章顶部标题下方。



SystemView简介

SystemView是嵌入式系统的实时记录和可视化工具。它揭示了应用程序的真实运行时行为,比调试器提供的系统洞察更深入。这在开发和处理由多线程和中断组成的复杂嵌入式系统时尤为有效。SystemView可确保系统按设计运行,跟踪低效情况,并发现意外的交互和资源冲突。——SEGGER官网

可以查看任务和中断运行的时序图
STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

可以查看任务调度情况

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS


移植源码

官网下载,本文选择的是V3.52版本,如果下载太慢可以在文章顶部标题下方下载。

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

在工程目录下新建SEGGER目录,进入SystemView安装目录,准备往SEGGER目录移入源码

SystemView\Src\SEGGER\下的所有.c .h 文件移入SEGGER目录

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

SystemView\Src\Config\下的所有.c .h 文件移入SEGGER目录
STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

SystemView\Src\Sample\FreeRTOSV9\下的所有.c .h 文件移入SEGGER目录

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

SystemView\Src\Sample\FreeRTOSV9\Config\Cortex-M\下的所有.c .h 文件移入SEGGER目录

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

此时SEGGER目录下的内容如图所示,将此目录文件添加到工程即可

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS



给FreeRTOS打补丁

这里不打补丁一样能监控系统,有知道打补丁作用的大佬可以评论区告诉大家!
这里不打补丁一样能监控系统,有知道打补丁作用的大佬可以评论区告诉大家!
这里不打补丁一样能监控系统,有知道打补丁作用的大佬可以评论区告诉大家!

SystemView\Src\Sample\FreeRTOSV9\Patch\目录下的FreeRTOSV9_Core.patch集成了对FreeRTOS的改动,可以通过git apply命令一键修改

打开文件可以看到工作路径为/libs/FreeRTOS/

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

打开FreeRTOSv9.0.0目录,新建libs\FreeRTOS\文件夹

FreeRTOSv9.0.0\FreeRTOS\Source\中所有文件移入其中

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS

FreeRTOSV9_Core.patch移入到FreeRTOSv9.0.0根目录,并执行如下命令即可完成一键打补丁

git apply FreeRTOSV9_Core.patch



修改配置

FreeRTOSConfig.h中添加如下宏定义

#define INCLUDE_xTaskGetIdleTaskHandle  1
#define INCLUDE_pxTaskGetStackStart     1

FreeRTOS.h中包含如下头文件

#include "SEGGER_SYSVIEW_FreeRTOS.h"

main.c中包含如下头文件

#include "SEGGER_SYSVIEW.h"

并在系统调度开始前,调用如下函数

SEGGER_SYSVIEW_Conf();

在SYSTICK中断中添加中断进出记录traceISR_ENTERtraceISR_EXIT

void xPortSysTickHandler( void )
{
	traceISR_ENTER();

	vPortRaiseBASEPRI();
	{
		if( xTaskIncrementTick() != pdFALSE )
		{
			portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
			traceISR_EXIT_TO_SCHEDULER();
		}
		else
		{
			traceISR_EXIT();
		}
	}
	vPortClearBASEPRIFromISR();
}

其余中断,例如定时器中断、UART中断等,都需要手动加上traceISR_ENTERtraceISR_EXIT来记录中断进出,否则不会显示此中断的运行情况



开始运行

代码如下

#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "FreeRTOS.h"
#include "task.h"

#include "SEGGER_SYSVIEW.h"

void SystemClock_Config(void);

static TaskHandle_t task1_handle = NULL;
static TaskHandle_t task2_handle = NULL;

void task1(void *arg)
{
	while(1)                            
	{
	}
}

void task2(void *arg)
{
	while(1)                            
	{
	}
}

int main(void)
{
	HAL_Init();
	SystemClock_Config();
	MX_GPIO_Init();
	MX_USART6_UART_Init();

	xTaskCreate(task1, "task1", 1024, NULL, 20, &task1_handle);
	xTaskCreate(task2, "task2", 1024, NULL, 20, &task2_handle);

	SEGGER_SYSVIEW_Conf();

	// 开启调度
	vTaskStartScheduler();
	while(1);
}

打开SystemView V3.52,点击开始,选择对应芯片即可

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS
效果如图

STM32+FreeRTOS 使用SystemView监控系统,单片机,物联网,freertos,stm32,数据库,嵌入式硬件,RTOS文章来源地址https://www.toymoban.com/news/detail-546287.html

到了这里,关于STM32+FreeRTOS 使用SystemView监控系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕业设计 stm32火灾监控报警系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2023年04月17日
    浏览(29)
  • 基于STM32+华为云IOT设计的智能温室大棚监控系统

    当前文章介绍基于STM32单片机的智能温室大棚监控系统,当前系统由温湿度传感器、二氧化碳传感器、光敏电阻传感器、土壤湿度传感器笨时温宏大棚中内作物生长环境因子主要包括温度、湿度、光度、土壤湿度传感、二氧化碳浓度等参数进行监控。 采集数据,判断是否在系

    2024年02月05日
    浏览(43)
  • 毕业设计 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月03日
    浏览(69)
  • 单片机毕设 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月18日
    浏览(48)
  • 单片机毕设 stm32的火灾监控与可视化系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年04月09日
    浏览(41)
  • 嵌入式毕设分享 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月17日
    浏览(57)
  • 物联网项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月17日
    浏览(50)
  • 单片机项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月16日
    浏览(54)
  • 【单片机毕设选题】 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包