ROM/RAM太小,因此要对系统进行剪裁: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 相关文章 1 系统的剪裁 2 FreeRTOSConfig.h 3 应用相关配置 configUSE_PREEMPTION configMAX_PRIORITIES configMINIMAL_STACK_SIZE configUSE_16_BIT_TICKS configUSE_CO_ROUTINES configMAX_CO_ROUTINE_PRIO…
http://www.freertos.org/a00110.html FreeRTOS is customised using a configuration file called FreeRTOSConfig.h. Every FreeRTOS application must have a FreeRTOSConfig.h header file in its pre-processor include path. FreeRTOSConfig.h tailors the RTOS ke…
FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制.每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS内核.这个配置文件是针对用户程序的,而非内核,因此配置文件一般放在应用程序目录下,不要放在RTOS内核源码目录下. 在下载的FreeRTOS文件包中,每个演示例程都有一个FreeRTOSConfig.h文件.有些例程的配置文件是比较旧的版本,可能不会包含所有有效选项.如果没有在配置文件中指定某个选项,那么RTOS内核会使…
RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建.删除.挂起和恢复等操作,由此可见任务管理的重要性.由于任务相关的知识很多,所以接下来我们将用几章的内容来讲解FreeRTOS 的任务.本章先学习一下FreeRTOS的任务基础知识,本章是后面学习的基础,所以一定要掌握本章关于FreeRTOS 任务管理的基础知识,本章分为如下几部分: 5.1 什么是…
开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来.等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍. 本节知识: 1.c语言中一共有32个关键字,分别是:auto.int.double.long.char.short.float.unsigned.signed.sizeof.extern.static.goto.if.else.…
本文出处:http://blog.csdn.net/mbh_1991/article/details/10149805 开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来.等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍. 本节知识: 1.c语言中一共有32个关键字,分别是:auto.int.double.long.char.sh…
个人不是很喜欢FreeRTOS的编程风格,但是没办法,白嫖人家的东西,只能忍了,这里先简单总结一下: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 相关文章 1 源码结构 2 数据类型 3 命名规则 3.1 常见命名规则 3.2 FreeRTOS的规则 4 总结 1 源码结构 下载或者克隆源码,可以看到顶层的源码结构如下图所示: FreeRTOS:实时系统的源文件,主要是这部分: FreeRTOS-Plus:这里主要基于FreeRTOS的de…
在FreeRTOS中,线程的术语又可以被称之为任务,或许这样更加合适,本文将介绍任务的创建/删除,任务参数的使用,以及任务优先级: 1 软实时和硬实时 硬实时系统的任务运行正确性与响应时限是紧密相关的,一旦超过时限将导致严重的后果,比如导弹控制系统.高铁自动驾驶系统等,都是需要严格的响应时限的. 软实时系统中,虽然也存在时限指标,但是如果输出响应超过时限,一般不会造成严重后果,比如Windows桌面任务,DVD播放机的视频播放. 大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求. 软实时…
上一次,我们简单的测试了FreeRTOS的基于IAR EWARM v6.4和STM32F103VET6平台的Demo,对其有了一个基本认识.接下来我们开始自己移植FreeRTOS的过程. 1.创建一个“FreeRTOSTestProject”项目文件夹,并在其下创建FreeRTOS.Libraries.Project.User文件夹. 与无操作系统的项目一样User中存放应用文件:Project中存放项目文件:Libraries中存放STM32F1xx标准库文件.而在FreeRTOS文件夹中存放…
对于本节的函数内容其实就没什么难点了,但是对于函数这节又涉及到了顺序点的问题,我觉得可以还是忽略吧. 本节知识点: 1.函数中的顺序点:f(k,k++);  这样的问题大多跟编译器有关,不要去刻意追求.  这里给下顺序点的定义:顺序点是执行过程中修改变量值的最后时刻.在程序到达顺序点的时候,之前所做的一切操作都必须反应到后续的访问中. 2.函数参数:函数的参数是存储在这个函数的栈上面的(对于栈可以看上篇文章<内存管理的艺术>),是实参的拷贝. 3.函数的可变参数: a.对于可变参数要包含sta…
-----------学习dubbo源码,能给你带来什么好处?----------- 1.提升SOA的微服务架构设计能力   通过读dubbo源码是一条非常不错的通往SOA架构设计之路,毕竟SOA的服务治理就是dubbo首先提出来的,比起你去看市面上的SOA微服务架构的书籍,学到的架构原理要更丰富更有深度.2.提升自己在部门团队的技术影响力   你所在的部门团队如果使用了dubbo框架,必然需要懂dubbo底层核心的人:如果你把dubbo源码的架构原理掌握好,一般出现dubbo的疑难杂症,只要你…
1.关于实时操作系统的一些概念性问题 2.freeRTOS与裸机程序相比有什么区别?? 3.freeRTOSConfig.h文件对FreeRTOS进行系统配置 4.FreeRTOS的内存管理…
FreeRTOSConfig.h 中的常量configMAX_PRIORITIES的值就是任务优先级的最大数值,这个数值可以按照自己的需要改动,当然值越大,内核对内存的开销就越大,一般设置一个满足自己需求的最小值就可以了: FreeRTOSConfig.h中另一个重要的常量就是configTICK_RATE_HZ,这个常量就是心跳(ticks): 时间片长度的大小就是通过configTICK_RATE_HZ来决定的: 实际上这个常量是一个时钟中断,对应的时钟中断函数是内核用来决定下一个时间片该运…
freertos的基本框架如下 注意有三点很重要: 1.任务的资源 (1)任务优先级:freertos 能够调度的任务优先级在freertosConfig.h中的configMAX_PRIORITIES中定义,每一个任务的优先级都在0~configMAX_PRIORITIES -1 中取值 优先级是数值越小,优先级越小,空闲任务的优先级为0.高优先级的任务必须有延时,低优先级的任务才能获得人物使用权. 任务优先级在定义时,可参考以下的规则:     ① IRQ 任务:IRQ 任务是指通过中断服务…
一:架构概述 FreeRTOS是一个相对较小的应用程序.最小化的FreeRTOS内核仅包括3个(.c)文件和少数头文件,总共不到9000行代码,还包括了注释和空行.一个典型的编译后(二进制)代码映像小于10KB. FreeRTOS的代码可以分解为三个主要区块:任务,通讯,和硬件接口. ●任务:大约有一半的FreeRTOS的核心代码用来处理多数操作系统首要关注的问题:任务.任务是给定优先级的用户定义的C函数.task.c和task.h完成了所有有关创建,调度,和维护任务的繁重工作. ●通讯:任务很…
一:FreeRTOS 作为一个轻量级的操作系统,FreeRTOS 提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满足较小系统的需要.FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU 总是让处于就绪态的.优先级最高的任务先运行.FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU 的使用时间.FreeRTOS 的内核可根据用户需…
JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) 功能:执行<表达式>一次. 例子: <!DOCTYPE html> <html> <head> <title>timer1.html</title> <meta http-equiv="keywords" co…
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap) 扩展类加载器(Extension) 系统类加载器(System) 2.用户自定义的类加载器: java.lang.ClassLoader的子类,用户可以定制类的加载方式. JVM自带的加载器 Java虚拟机自带了以下几种加载器. 1.根(Bootstrap)类加载器: 该加载器没有父加载器. 它…
原文:ThinkPhp学习05 一.ThinkPHP 3 的CURD介绍  (了解)二.ThinkPHP 3 读取数据    (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User'); select $m->select();//获取所有数据,以数组形式返回 find $m->find($id);//获取单条数据 getField(字段名)//获取一个具体的字段值 $arr=$m->where('id=2')->getField('us…
入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就能入门. 深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术.书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习. 学习参考: <深度学习入门:基于Python的理论与实现>中文版PDF,…
PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉.自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的Allen NLP,用于概率图模型的Pyro,扩展了PyTorch的功能.通过学习<深度学习入门之PyTorch>,可以从机器学习和深度学习的基础理论入手,从零开始学习 PyTorch,了解 PyTorch 基础,以及如何用 PyTorch 框架搭建模型.学到机器学习中的线性回归和 Logistic 回归.深度…
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉得自己动手写一遍印象要深刻许多,希望想深入学习MVC的童鞋自己动手写写.好了,废话就此打住. 本文原创地址:http://www.cnblogs.com/landeanfen/p/6016394.html MVC源码学习系列文章目录: MVC系列——MVC源码学习:打造自己的MVC框架(一) MVC…
原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Excel的内置公式虽然强大,但是在ERP等系统中,往往需要进行很多业务上的计算,如收发存台账.指定年.月.部门的消耗查询等,都是需要从数据库中查询的,且和业务紧密相连.这时仅仅依靠Excel的内置公式就不够了,需要添加自定义的公式来进行这些业务计算. 测试代码下载 本系列所有测试代码均在Visual St…
嵌入式系统中中断是必不可少的一部分: [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 1 前言 2 中断特点 3 延迟中断处理 3.1 信号量的使用 3.2 vSemaphoreCreateBinary 3.3 xSemaphoreTake 3.4 xSemaphoreGiveFromISR 4 计数信号量 5 总结 1 前言 本文会在中断基础上对FreeRTOS的中断管理做一个介绍,读者需要掌握中断的概念,本文暂不会对此进行深入介绍:再操作系统中,中断…
第4章 指针和数组 1. int *p=NULL 和 *p=NULL 有什么区别 int *p = NULL; 第一句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是 int类型的数据:在定义变量的同时把p的值设置为 0x00000000,而不是把 *p的值设置为 0x00000000,这个过程称为初始化,是在编译的时候进行的. int *p; *p = NULL; 第一行代码,定义了一个指针变量p,其指向的内存里面保存的是 int类型的数据,但是这时候p本身的是多少不得而知:第二行代…
第6章 函数 1.编码风格 [规则6-1]每一个函数都必须有注释 [规则6-2]每个函数定义之后以及每个文件结束之后都要加若干个空行 [规则6-3]在一个函数体内,变量定义与函数语句之间要加空行 [规则6-4]逻辑上密切相关的语句之间不加空行 [规则6-5]复杂的函数中,在分支语句,循环语句结束之后需要适当的注释 [规则6-6]不要随意删除别人的代码 [规则6-7]用缩行显示程序结构,缩进量同意使用4个字符 [规则6-8]同层次的代码在同层次的缩进层 [规则6-9]代码行最大长度控制在80个字符…
第5章 内存管理 1.野指针 定义指针变量的同时最好初始化为NULL,用完指针后也将变量的值设置为NULL.也就是说除了使用时,别的时间都把它设置为NULL 2.堆,栈和静态区 堆:由malloc系列函数或new操作符分配的内存.其生命周期由free或delete决定 栈:保存局部变量 静态区:保存自动全局变量和static变量.整个程序的生命周期都存在,由编译器在编译的时候分配 3.常见的内存错误 结构体成员指针未被初始化 没有为结构体指针分配足够的内存 一般在函数入口使用 assert(NU…
第3章 预处理 1.下面两行代码都是错的.因为注释先于预处理指令被处理,当这两行被展开成“//……”和“/*……*/”时,注释已处理完毕,所以出现错误 #define BSC // #define BMC /* #define EMC */ BSC my single - line comment BMC my multi - line comment EMC [规则 3-1]函数宏的调用不能缺少参数,如果此函数宏有参数的话. [规则 3-2]在定义函数宏时,每个参数实例都应该小括号括起来,除非…
第2章 符号 1.注释符号 编译器会将注释剔除,用空格代替原来的注释 y=x /* p; 编译器提示出错的原因:实际上,编译器会把“/*”当作一段注释的开始,直到出现“*/”为止. [规则 2-1]注释应当准确,易懂,防止二义性 [规则 2-2]注释是对代码的提示,而不是文档 [规则 2-3]边写代码边写注释 [规则 2-4]一目了然的语句不加注释 [规则 2-5]全局数据必须加注释 [规则 2-6]注释采用英文(不一定所有的编译器都能显示中文) [规则 2-7]注释的位置与被描述的代码相邻,可…
第一章 关键字 C语言共有32个关键字. 关键字   auto 声明自动变量 int 声明整型变量 long 声明长整型变量 char 声明字符型变量 float 声明浮点型变量 short 声明短整型变量 double 声明双精度变量 signed 声明有符号类型变量 unsigned 声明无符号类型变量 struct 声明结构体变量 union 声明联合数据类型 enum 声明枚举数据类型 static 声明静态变量 switch 用于开关语句 case 开关语句分支 default 开关语…