[FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解
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: |
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配置参数及理解的更多相关文章
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
- 项目中Zookeeper配置参数笔记
ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxo ...
- MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)
1)interactive_timeout:参数含义:服务器关闭交互式连接前等待活动的秒数.交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的 ...
- Webpack中SplitChunksPlugin 配置参数详解
代码分割本身和 webpack 没有什么关系,但是由于使用 webpack 可以非常轻松地实现代码分割,所以提到代码分割首先就会想到使用 webopack 实现. 在 webpack 中是使用 Spl ...
- Spring Boot(二):Spring Boot中的配置参数
Spring Boot 配置参数 Spring Boot 帮助我们完成了许许多多的自动化配置 如果我们需要根据自己的需求修改配置 也是可以的 可以使用.properties 和 .yml 格式配置 这 ...
- Linux中ifcfg-eth0配置参数解释
Linux中设置IP地址经常使用到ifcfg-eth0这个文件. vi /etc/sysconfig/network-scripts/ifcfg-eth0 附录文件中的内容: DEVICE=eth0 ...
- Tomcat server.xml中Connector配置参数详解
Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...
- nginx中fastcgi_params配置参数
Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来主要处理这些映射关系,下面 Ubuntu 下 Nginx 的一个配置文件,其主要完成的工作是将 Nginx 中的变量翻译成 ...
- Core3.0读取appsetting.json中的配置参数
前言 方法很多,下面的例子也是从百度上搜索到的,原文链接已经找不到了. 方法1 1.添加NovelSetting节点,写入相关的配置信息 2.创建类,字段与上面的配置一致 3.StartUp.cs中获 ...
随机推荐
- 面向对象进阶------>内置函数 str repr new call 方法
__new__方法: 我们来讲个非常非常重要的内置函数和init一样重要__new__其实在实例话对象的开始 是先继承父类中的new方法再执行init的 就好比你生孩子 先要把孩子生出来才能对孩子 ...
- Linux kill/pkill/killall命令详解
kill kill(terminate a process)命令用来终止指定的进程, 对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PI ...
- [Codeup 25482] Beauty
25482: Beauty 时间限制: 1 Sec 内存限制: 128 MB献花: 7 解决: 3[献花][花圈][TK题库] 题目描述 一年一度的星哥选美又拉开了帷幕 N个人报名参加选拔,每个人 ...
- 使用python 操作liunx的svn,方案二
在对liunx操作svn的方式,做了改动,使用python的,subprocess进行操作 在第一种方案中,我使用了先拉到本地,然后再创建,在进行上传,实际在svn中可以直接创建文件,并进行文件复制, ...
- Centos7 之目录处理命令(八)
linux中 关于目录 有几个重要概念 一个是 / 根目录 还有一个当前用户的家目录 比如 root用户的家目录是 /root 普通用户的家目录是/home/xxx 下 root登录 默认家目录 ...
- BZOJ1049:[HAOI2006]数字序列(DP)
Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列. 但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个 ...
- 【[AHOI2008]逆序对】
被锤爆了 被这个题搞得自闭了一上午,觉得自己没什么前途了 我又没有看出来这个题的一个非常重要的性质 我们填进去的数一定是单调不降的 首先如果填进去的数并不是单调不降的,那么填进去本身就会产生一些逆序对 ...
- 随手练——大量级阶乘 - HDU-2674 N!Again
N!Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Scrum培训小体会
公司组织Scrum培训. 虽然是针对ScrumMaster这个角色的培训,但更多是基于对Scrum这个敏捷开发实践方法的了解. 回来也有一些感想,记录下来.以后在工作实践中,继续探索.实践.体验.感悟 ...
- 5、Spring-Cloud-声明式调用 Feign(上)
5.1.写一个 Feign 害户端 新建项目: 依赖: <dependency> <groupId>org.springframework.boot</groupId&g ...