一 概述
在嵌入式小系统领域,freertos是一个非常厉害的角色。它和小芯片结合,能迸发出非常大的威力。这里在H730上使用了这个freertos,是应该做一个总结和备忘。
二 实例解析
1 线程初始化:
freertos最大的优势就是多任务,所以,多线程非常重要,怎么定义一个线程呢?
下面给出一个例子:
  /* definition and creation of Task_ADS1299 */
osThreadDef(Task_ADS1299, StartTask_ADS1299, osPriorityHigh, 0, 2*512);
Task_ADS1299Handle = osThreadCreate(osThread(Task_ADS1299), NULL); /* definition and creation of Task_MPU6050 */
osThreadDef(Task_MPU6050, StartTask_MPU6050, osPriorityNormal, 0, 512);
Task_MPU6050Handle = osThreadCreate(osThread(Task_MPU6050), NULL);
这里面其实都是标准的,每个参数的含义可以看函数即可,没有太复杂的逻辑存在。
2 运行
下面这个函数是freertos启动的标志。
  /* Start scheduler */
osKernelStart();
3 线程内部,
线程内部其实是一个非常标准的流程,
初始化加主循环。
void StartTask_ADS1299(void const * argument)
{
/* USER CODE BEGIN StartTask_ADS1299 */
//EXTI_PIN_1_Init();
mprintf("StartTask_ADS1299 success start \n\r");
static uint32_t ads_task_cnt = 0; /* Infinite loop */
for(;;)
{ osDelay(200);
ads_task_cnt++; //if((ads_data_cnt%10) == 0)
{
mprintf("ads_task_cnt is:%d \n\r",ads_task_cnt);
} }
/* USER CODE END StartTask_ADS1299 */
}
三 总结
 
1 freertos系统其实非常简介,想要看配置的话,就参考文件:FreeRTOSConfig.h文件。
想要看一下系统的整个流程,也就是看一下queue.c task.c几个文件,如下图所示:

 
 

基于stm32H730的解决方案开发之freertos系统解析的更多相关文章

  1. 基于xmpp openfire smack开发之Android客户端开发[3]

    在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们着力介绍如何基于asmack开发一个Android的客户端,本篇的重点在实践,讲解和原理环节,大家可以参考前 ...

  2. 基于xmpp openfire smack开发之openfire介绍和部署[1]

    前言 http://blog.csdn.net/shimiso/article/details/8816558 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也 ...

  3. 基于xmpp openfire smack开发之smack类库介绍和使用[2]

    http://blog.csdn.net/shimiso/article/details/8816540 关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利用它我们可 ...

  4. iOS 开发之 KVC - setValuesForKeysWithDictionary 解析

    从字典映射到一个对象,这是KVC中的一个方法所提供的,这个方法就是 setValuesForKeysWithDictionary:,非常好用,不需要你来一一的给对象赋值而直接从字典初始化即可,但用的不 ...

  5. Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...

  6. Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值

    Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值 题外话:一个问题研究到最后,那边记录文档的前半部分基本上都是没用的,甚至是错误的. 重点在最后,前边不过一些假想猜測. ht ...

  7. 基于msm8909高通平台Android驱动开发之hello程序

    本文转载自:http://www.itwendao.com/article/detail/227839.html Android驱动开发之Hello实例:   驱动部分 modified:   ker ...

  8. Cocos2d-x 3.x游戏开发之旅

    Cocos2d-x 3.x游戏开发之旅 钟迪龙 著   ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x ...

  9. DarkStone - 跨平台移动应用开发之 Flex 的崛起

    我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32)     此文章由 周戈 (DarkSton ...

  10. iOS多线程开发之NSOperation - 快上车,没时间解释了!

    一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...

随机推荐

  1. 在Visual Studio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)

      本文介绍在Visual Studio软件中配置.编译C++环境下GDAL库.SQLite环境与PROJ库的详细方法.   GDAL库是一个非常方便的地理数据处理库,但其在C++环境下的配置与编译流 ...

  2. DNS反向解析

    一:创建反向解析区 1.和创建正向解析区的步骤类似,选主要区域 这里设置的IP是192.168.1,一直点确定即可 2.指针记录即反向解析记录,记录ip对应的域名,是反向解析区最常用的记录 输入ip和 ...

  3. Linux防火墙操作命令(开放或关闭端口)

    在外部访问CentOS中部署应用时,需要通过防火墙管理软件,开端口,或者直接关闭防火墙进行解决(不建议) 常用命令:systemctl start firewalld               #启 ...

  4. vue-element-admin iframes 组件 保留 iframe 操作状态

    由于没有时间去维护这个功能,这个仓库我暂停了,当前博客内容和代码只作为实现思路参考 代码贴前面,gitee地址:https://gitee.com/chkhk/vue-element-admin 可以 ...

  5. [刺客伍六七&黑客] 魔刀千刃evilblade的使用手册与开源

    0x00 前言 2023.8.15 夜里 非常欢迎使用我的魔刀千刃,并且欢迎各位师傅对我的开源代码进行指导! -–Offense without defense, unparalleled in th ...

  6. NC20811 蓝魔法师

    题目链接 题目 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一 ...

  7. java 从零开始手写 redis(11)clock时钟淘汰算法详解及实现

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  8. springboot集成腾讯cos实现文件上传

    腾讯对象存储介绍 对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性.低成本.可靠安全等优点.通过控制台.API.SDK 和工具等 ...

  9. 深入理解Go语言(01): interface源码分析

    分析接口的赋值,反射,断言的实现原理 版本:golang v1.12 interface底层使用2个struct表示的:eface和iface 一:接口类型分为2个 1. 空接口 //比如 var i ...

  10. django中update_or_create()

    update_or_create()方法中有一个defaults参数 模型字段会根据查询条件进行查询,如果查询到了,那么就用defaults对应的值去更新字段,如果没有查到就用defaults对应的值 ...