如何使用cubemx 配置freertos,实时查看FreeRTOS任务列表和运行状态
---------------------------------------------------------------------------------------------------------------------------
cubemx版本:version_4.20
stm32型号:stm32f103rct6
---------------------------------------------------------------------------------------------------------------------------
关键点:
在FreeRTOSConfig.h文件中使能如下宏:
(1)* #define configUSE_TRACE_FACILITY 1
(2)* #define configGENERATE_RUN_TIME_STATS 1
(3)* #define configUSE_STATS_FORMATTING_FUNCTIONS 1
(4)* #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() (ulHighFrequencyTimerTicks = 0ul)
(5)* #define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTimerTicks
(6) 然后开启一个定时器5,作为计算任务信息的时钟。
--------------------------------------------------------------------------------------------------------------------------
关键点中:
这五个宏定义,第一个是自动生成的,第二个在cube里勾选某个选项后也是自动生成的。
第三个是自己手动添加的。
第四个和第五个,配置GENERATE_RUN_TIME_STATS后会自动生成。生成的是这样的:
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS configureTimerForRunTimeStats
#define portGET_RUN_TIME_COUNTER_VALUE getRunTimeCounterValue
而后边的其实是对应着各自的__weak前饰的函数。在函数体里加入了对应的语句:
__weak void configureTimerForRunTimeStats(void)
{
ulHighFrequencyTimerTicks = 0ul;
}
__weak unsigned long getRunTimeCounterValue(void)
{
return ulHighFrequencyTimerTicks;
// return 0;
}
除此之外,又用TIM5作为基本定时器,定时值位10us,开启定时器5,在其回调函数里:
void TIM5_IRQHandler(void)
{
/* USER CODE BEGIN TIM5_IRQn 0 */ /* USER CODE END TIM5_IRQn 0 */
HAL_TIM_IRQHandler(&htim5);
/* USER CODE BEGIN TIM5_IRQn 1 */ ulHighFrequencyTimerTicks++; /* USER CODE END TIM5_IRQn 1 */
}
---------------------------------------------------------------------------------------------------------------------
执行效果如下:

---------------------------------------------------------------------------------------------------------------------
需要注意的地方:
(1)cubemx 4.20这个版本的有个bug:
在stm32cubemx生成的main文件里面的void SystemClock_Config(void)函数里面的这部分代码
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
出现了这个bug,会生成下面这样的代码,,会导致程序执行不下去。
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
用前者,替代掉后者即可。
(2)另外,执行打印任务列表和运行状态的任务的堆栈需要大于256bype,否者可能会造成程序分配空间失败,
导致程序卡死。

(3)记得在主循环里面开启定时器TIM5
HAL_TIM_Base_Start_IT(&htim5);
---------------------------------------------------------------------------------------------------------------------------
源码已上传到github:源码地址
---------------------------------------------------------------------------------------------------------------------------
参考blog:
http://www.ing10bbs.com/forum.php?mod=viewthread&tid=498
如何使用cubemx 配置freertos,实时查看FreeRTOS任务列表和运行状态的更多相关文章
- 怎么实时查看mysql当前连接数
如何实时查看mysql当前连接数? 如何实时查看mysql当前连接数? .查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10. processlist .只查看当前 ...
- [原]使用MessageAnalyzer实时查看远端日志
1. 下载安装Message Analyzer 从Message Analyzer下载链接下载,安装过程从略. 说明:关于Message Analyzer的视频教程,可以在打开后的主界面上看到. 2. ...
- Linux 下实时查看日志
Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...
- 通过Xshell登录远程服务器实时查看log日志
主要想总结以下几点: 1.如何使用生成密钥的方式来登录Xshell连接远端服务器 2.在远程服务器上如何上传和下载文件(下载log文件到本地) 3.如何实时查看log,提取错误信息 一. 使用生成密 ...
- Linux 实时查看tomcat 日志--less命令
查看tomcat日志通常用 tail -n 或者 tail -f 或者grep 或者 vi cat等命令去查看异常信息,但是日志是在不停地刷屏,tail是动态的在变的,我们往往期望从日志最后一行往前 ...
- 如何实时查看Linux下日志
以下以Tomcat为例子,其他WEB服务器目录自己灵活修改即可: 1.先切换到:cd usr/local/tomcat5/logs2.tail -f catalina.out3.这样运行时就可以实时查 ...
- LogStation 支持浏览器实时查看日志
我们在logback 分布式日志汇总中已经将日志输出到了all.logs,LogStation支持浏览器实时查看日志,适合研发和运维彼此独立的场景:研发没有服务器权限,却想看日志实时输出.再配合ngi ...
- Linux实时查看日志,访问前10IP 和相关命令
Nginx日志分析可以获得很多有用的信息,现在来试试最基本的,获取最多访问的前10个IP地址及访问次数. 既然是统计,那么awk是必不可少的,好用而高效. 命令如下: awk '{a[$1] += 1 ...
- 实时查看mysql当前连接数
如何实时查看mysql当前连接数? 1.查看当前所有连接的详细资料:./mysqladmin -uadmin -p -h10.140.1.1 processlist 2.只查看当前连接数(Thread ...
随机推荐
- Pig autocomplete 自动补全
在pig的grunt环境下,按TAB键可以自动补全命令,用户可以添加自己的补全信息. 在conf目录下创建autocomplete文件,添加如下内容: hdfs://vm1:8020/ 在grun ...
- ES6高频面试题目整理
本篇文章是根据以下内容进行的总结 1.https://segmentfault.com/a/1190000011344301 2.http://www.bslxx.com/a/mianshiti/ti ...
- 搜索关键字自动更正 - Oracle Endeca Server
做了几个Oracle Endeca 电商项目.每个项目都会有搜过关键字拼写错误更正(Spelling Correction)的需求.淘宝也有类似功能. Oracle Endeca Sever提供了关键 ...
- 从本机构建Linux应用程序VHD映像
下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程: 具体步骤如下: 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统 在此操作 ...
- 记开发个人图书收藏清单小程序开发(十)DB开发——新增图书信息
昨晚完成了Web端新增图书信息的功能,现在就差DB的具体实现了. 因为我把Book相关的信息拆分的比较多,所以更新有点小麻烦. 首先,我需要创建一个Book Type的Matter: 然后,将图片路径 ...
- 使用django的admin的后台管理界面
django的admin后台管理界面是方便我们对数据库操作的 是一个在浏览器显示的 图形化界面数据库操作 我们先在django中的admin中把我们需要在图形化界面中进行操作的表导入进去: 先把m ...
- 多线程应用-函数方式(thread)
多线程只能使用一颗CPU,无法发挥多核心的优势.计算密集型用python的多线程效果不明显的,I/O密集型才能看出效果,可以发挥多核优势. GIL是全局资源锁,所以,如果没有涉及到资源的调用,是不会体 ...
- Python学习---爬虫学习[scrapy框架初识]
Scrapy Scrapy是一个框架,可以帮助我们进行创建项目,运行项目,可以帮我们下载,解析网页,同时支持cookies和自定义其他功能. Scrapy是一个为了爬取网站数据,提取结构性数据而编写的 ...
- dev richEditControl控件 设置文字 字体 大小
Document doc = NoticeContentRichEditControl.Document; doc.BeginUpdate(); doc.Text = "需要设置格式的文字& ...
- HBase搭建部署
基础环境准备 zookeeper集群(参开地址:https://www.cnblogs.com/starzy/p/10376642.html) Hadoop集群(参考地址:https://www.cn ...