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. sql大数据多条件查询索引优化

    此优化的前提可以称之为最近流行的头条人物“许三多”,总数据多,查询条件多,返回列多 优化前分页查询内部select列为需要的全部列,优化后内部select只返回ID主键,外部查询关联原数据表,然后查出 ...

  2. 沉淀再出发:java的文件读写

    沉淀再出发:java的文件读写 一.前言 对于java的文件读写是我们必须使用的一项基本技能,因此了解其中的原理,字节流和字符流的本质有着重要的意义. 二.java中的I/O操作 2.1.文件读写的本 ...

  3. 021.3 IO流——字节流-FileInputStream读取字节

    内容:文件读取方法,读取方法例子,read(buf)方法中buf的取值,字节流缓冲区对象—提高读取速度/// 文件读取方法:fis.read(),fis.read(buf),具体看例子 例子:文件读取 ...

  4. select poll epoll Linux高并发网络编程模型

    0 发展历程 同步阻塞迭代模型-->多进程并发模型-->多线程并发模型-->select-->poll-->epoll-->... 1 同步阻塞迭代模型 bind( ...

  5. Inno Setup新建项目

    一.准备一个例子工程WEI 运行起来是这样的 二.开始新建 使用Inno Setup Compiler或Inno Script Studio新建都可以,我这里先用Inno Setup Compiler ...

  6. 8、Dubbo-配置(3)

    高可用 1.zookeeper宕机与dubbo直连 现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务. 原因: 健壮性 监控中心宕掉不影响使用,只是丢失部分采样数据 数据库宕掉后, ...

  7. leetcode 20 括号匹配

    class Solution { public: bool isValid(string s) { stack<char> result; for(char c:s){ if(c == ' ...

  8. textarea多行文本框自适应高度

    <script src="https://cdn.bootcss.com/jquery/1.8.1/jquery.js"></script> <scr ...

  9. C# - 静态类和静态构造函数

    一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,不能带任何参数,不能直接调用,只能在: 1 创建包含静态构造函数的类实例时 2 访问包含静态构造函数的静态成员时 会先调用静态构造函数,无论创 ...

  10. AttributeError: 'module' object has no attribute get'

    最近在写python requests相关内容易,突然报错AttributeError: 'module' object has no attribute 'get'" 脚本肯定没问题 怎么 ...