1.有关优先级

  1.1 Configuration --> FreeRTOS

MAX_PRIORITIES

  设置任务优先级的数量:配置应用程序有效的优先级数目。任何数量的任务都可以共享一个优先级,使用协程可以单独的给与它们优先权。见MAX_CO_ROUTINE_PRIORITIES。 在RTOS内核中,每个有效优先级都会消耗一定量的RAM,因此这个值不要超过你的应用实际需要的优先级数目。

  每一个任务都会被分配一个优先级,优先级值从0~ (MAX_PRIORITIES - 1)之间。低优先级数表示低优先级任务。空闲任务的优先级为0(PriorityIdle),因此它是最低优先级任务。

  FreeRTOS调度器将确保处于就绪状态(Ready)或运行状态(Running)的高优先级任务比同样处于就绪状态的低优先级任务优先获取处理器时间。换句话说,处于运行状态的任务永远是高优先级任务。

  处于就绪状态的相同优先级任务使用时间片调度机制共享处理器时间。

Interrupt nesting behaviour configuration

断言配置

LIBRARY_LOWEST_INTERRUPT_PRIORITY

此宏定义是用来配置 FreeRTOS中用到的SysTick中断和PendSV中断的优先级reeRTOSreeRTOS reeRTOSreeRTOS 用到 的 SysTSysT ick 中断和 PendSV 中断 的优先级。在 NVIC分组设置为4的情况下,此宏定义的范围就是 0-15 ,即专门配置抢占优先级。这里 即专门配置抢占优先级。这里 配置 为了 15,即 SysTick和 PendSV 都配配置为了最低优先级,实际项目中也建议配置为最低优先级。

LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

定义了受FreeRTOS管理的最高优先级中断。简单的说就是允许用户在这个中断服务程序里面调用FreeRTOS的API的最高优先级。设置NVIC的优先级分组为4的情况下(全部配置为抢占式优先级。又因为STM32的优先级设置仅使用CM内核8bit中的高4bit,即只能区分2^4 = 16种优先级。因此当优先级分组设置为4的时候可供用户选择抢占式优先级为0到15,共16个优先级,配置为0表示最高优先级,配置为15表示最低优先级,不存在子优先级。),配置LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY可以在抢占式优先级为1到15的中断里面调用FreeRTOS的API函数,抢占式优先级为0的中断里面是不允许调用的。

Eg:configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 为 0x01 表示用户可以在抢占式优先级为 1 到 15 的中断里面调用 FreeRTOS 的 API 函数,抢占式优先级为 0 的中断里面是不允许调用的。即抢占式优先级为 1 到 15的中断,均受FreeRTOS管理,0是最高优先级不受FreeRTOS管理。        

Parameter Description:
The highest interrupt priority that can
be used by any interrupt service routine that makes calls to interrupt
safe FreeRTOS API functions.
DO NOT CALL INTERRUPT SAFE FREERTOS API
FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER PRIORITY THAN THIS! (higher
priorities are lower numeric values).

  1.2 Task and Queues

Priority:任务优先级。STM32Cube对FreeRTOS进行了一些修改,优先级只有7个,优先级从低到高依次是:osPriorityIdle(空闲任务/任务优先级为0)、osPriorityLow、osPriorityBelowNormal、osPriorityNormal、osPriorityAboveNormal、osPriorityHigh、osPriorityRealtime;

2.有关时钟配置

  2.1两个时基

转资料2:[FreeRTOS]请教大家关于新版本CubeMX生成FreeRTOS时选择时基的问题   http://bbs.armfly.com/read.php?tid=18289&page=e

我也使用生成的代码,这个问题我估摸着是这样的。
第一  FreeRTOS 肯定使用的是 systick 

第二  提到的 recommended to use a timebase other 应该说的HAL_IncTick() 还是需要用到的;由于FreeRTOS使用了systick ,所以推荐使用其他的时基源来IncTick

至于为什还要HAL_IncTick()??  原来在这里

这个是 HAL_CAN_Transmit() 其中的一段。。 。

问题:

1.当时,

2当时,(无论LIBRARY_LOWEST_INTERRUPT_PRIORITY和LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY怎么设置都如下)

转:systick中断优先级为15,是否会导致延时不准确?http://www.openedv.com/forum.php?mod=viewthread&tid=269893

我觉得是的,比如串口的中断抢占优先级设成6(优先级分组是4),那么串口中断服务函数里的处理就要干净利索,所谓快进快出,否则耽误systick的延时处理。 但是应用任务无论优先级多少,都不会对Systick的处理造成影响。

总结,HAL库函数如CAN通讯用的是HAL_IncTick(),而HAL_IncTick()是CubeMX的TimeBase配置的,这个时候如果需要实时响应,则TimeBase最好为最高优先级0,即根据CubeMX推荐的设置TimeBase为TIM1提供。而原先裸机的HAL系统时钟用的Systick,现在Systick用到FreeRTOS上的调度,所以要求Systick为最低优先级15,这样可以保证systick不会对进程造成影响,仅存在延时。而消除延时的手段并不是提高systick的优先级,而是让中断服务程序更快。

 

转载:资料

1.FreeRTOS操作系统配置参数说明 . 金涛 https://wenku.baidu.com/view/0289379d8ad63186bceb19e8b8f67c1cfad6eef5.html

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}

2.[FreeRTOS]请教大家关于新版本CubeMX生成FreeRTOS时选择时基的问题 http://bbs.armfly.com/read.php?tid=18289&page=e

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
table.MsoTableGrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-unhide:no;
mso-style-qformat:yes;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.0pt;
font-family:"Times New Roman","serif";}

[FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解的更多相关文章

  1. 读取xml文件中的配置参数实例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...

  2. 项目中Zookeeper配置参数笔记

    ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxo ...

  3. MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)

    1)interactive_timeout:参数含义:服务器关闭交互式连接前等待活动的秒数.交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的 ...

  4. Webpack中SplitChunksPlugin 配置参数详解

    代码分割本身和 webpack 没有什么关系,但是由于使用 webpack 可以非常轻松地实现代码分割,所以提到代码分割首先就会想到使用 webopack 实现. 在 webpack 中是使用 Spl ...

  5. Spring Boot(二):Spring Boot中的配置参数

    Spring Boot 配置参数 Spring Boot 帮助我们完成了许许多多的自动化配置 如果我们需要根据自己的需求修改配置 也是可以的 可以使用.properties 和 .yml 格式配置 这 ...

  6. Linux中ifcfg-eth0配置参数解释

    Linux中设置IP地址经常使用到ifcfg-eth0这个文件.  vi /etc/sysconfig/network-scripts/ifcfg-eth0 附录文件中的内容: DEVICE=eth0 ...

  7. Tomcat server.xml中Connector配置参数详解

    Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...

  8. nginx中fastcgi_params配置参数

    Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来主要处理这些映射关系,下面 Ubuntu 下 Nginx 的一个配置文件,其主要完成的工作是将 Nginx 中的变量翻译成 ...

  9. Core3.0读取appsetting.json中的配置参数

    前言 方法很多,下面的例子也是从百度上搜索到的,原文链接已经找不到了. 方法1 1.添加NovelSetting节点,写入相关的配置信息 2.创建类,字段与上面的配置一致 3.StartUp.cs中获 ...

随机推荐

  1. Docker-容器数据卷

    docker容器数据卷相当于外置的移动硬盘 docker容器数据卷主要功能是:容器的持久化.容器间继承+共享数据 特点: (1)数据卷可以容器之间共享或重用数据 (2)卷中更改可以直接生效 (3)数据 ...

  2. 集合、深浅copy

    集合set: 集合也和列表数组一样有增加,但是集合是真正的没有顺序的  所以集合无法查找的,并且集合的外观你看着好像是字典和列表的组合,因为它是用字典的括号一样 ,但是又是里面并没有键值对  只是一个 ...

  3. 文件复制(shutil)

    import shutil #拷贝整个目录树 shutil.copytree('d:\\aaa','e:\\aaa') #目标文件夹(e:\aaa)必须不存在 shutil.rmtree('e:\\a ...

  4. [tools]excel转lua的python实现

    time:2015/04/13 描述:需要将excel表格内容转成lua,并且作为工具使用,能够批量转换 步骤: (1)文章[1]已经做了大部分的内容,而且也已经能够使用了 (2)根据自己新的需求: ...

  5. SVN图标不显示的解决几种方式

    系统安装的Tortoise SVN,不知道是不是安装了其他软件的缘故,造成SVN客户端功能可以正常使用,就是文件夹或文件的左下角不显示图标.故上网查找解决方法: 方法一: 升级到最新版本,基本是没用的 ...

  6. Python学习---Django重点之静态资源配置

    [官网静态文件介绍] https://docs.djangoproject.com/en/1.10/howto/static-files/ # settings.py 配置静态资源文件 # STATI ...

  7. setfacl 命令的常用用法

    setfacl命令----可以用来细分linux下的文件权限. chmod命令----可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说,set ...

  8. December 29th 2016 Week 53rd Thursday

    The true nobility is in being superior to your previous self. 真正的高贵在于超越过去的自己. It is really difficult ...

  9. Mac sshw 使用

    sshw ssh client wrapper for automatic login. install use go get go get -u github.com/yinheli/sshw/cm ...

  10. 深入了解Node模块原理

    深入了解Node模块原理 当我们编写JavaScript代码时,我们可以申明全局变量: var s = 'global'; 在浏览器中,大量使用全局变量可不好.如果你在a.js中使用了全局变量s,那么 ...