4.FreeRTOS系统配置文件详解(FreeRTOSConfig.h)

news2024/9/22 21:35:24

目录

一、基础配置选项

二、内存分配相关定义

三、钩子函数的相关定义

四、运行时间和任务状态统计相关定义

五、软件定时器相关配置

FreeRTOSConfig.h配置文件的作用:

对FreeRTOS进行功能配合和裁剪,以及API函数的使能

对于FreeRTOS配置文件主要分为以下三类:

1、“INCLUDE”:主要用于配置FreeRTOS中可选的API函数

2、“config”:完成FreeRTOS的功能配置和裁剪

3、其他配置选项:PendSV宏定义、SVC宏定义

一、基础配置选项

(1)configUSE_PREEMPTION宏定义的配置

#define configUSE_PREEMPTION                            1                      
 /* 1: 抢占式调度器, 0: 协程式调度器, 无默认需定义 */

(2)configUSE_PORT_OPTIMISED_TASK_SELECTION宏定义的配置

#define configUSE_PORT_OPTIMISED_TASK_SELECTION         1                      
 /* 1: 使用硬件计算下一个要运行的任务(硬件),
 0: 使用软件算法计算下一个要运行的任务(通用的方式)-效率较低, 默认: 0 
特殊方法的效率高于通用方法,但是特殊方法依赖于一个或多个架构的汇编指令
(一般是类似前导零[CLZ]的指令),因此特殊方法并不支持所有硬件,并且对任务优先级的最大值
也有限制,通常为32*/

(3)configUSE_TICKLESS_IDLE宏定义的配置

#define configUSE_TICKLESS_IDLE                         0                       
/* 1: 使能tickless低功耗模式, 默认: 0 */

(4)configCPU_CLOCK_HZ宏定义的配置

#define configCPU_CLOCK_HZ                              SystemCoreClock         
/* 定义CPU主频, 单位: Hz, 无默认需定义 */

这里我们定义的时钟频率并不是16M

 我们在main.c有一个时钟使能,跳进去以后,这一块才是真正的初始化。

 (5)configSYSTICK_CLOCK_HZ 宏定义的配置,直接屏蔽

//#define configSYSTICK_CLOCK_HZ                          (configCPU_CLOCK_HZ / 8)
/* 定义SysTick时钟频率,当SysTick时钟频率与内核时钟频率不同时才可以定义,
 单位: Hz, 默认: 不定义 */

为什么要屏蔽?是因为滴答定时器的时钟源和内核时钟源是相同的,所以不需要定义的

(6)configTICK_RATE_HZ宏定义的配置

#define configTICK_RATE_HZ                              1000                   
 /* 定义系统时钟节拍频率, 单位: Hz, 无默认需定义 */

(7)configMAX_PRIORITIES宏定义配置

#define configMAX_PRIORITIES                            32                      
/* 定义最大优先级数, 最大优先级=configMAX_PRIORITIES-1, 无默认需定义 */

定义的最大优先级是32.因为是硬件计算,所以与硬件系统的位数有关

(8)configMINIMAL_STACK_SIZE宏定义配置

#define configMINIMAL_STACK_SIZE                        128                     
/* 定义空闲任务的栈空间大小, 单位: Word, 无默认需定义 */

我们要创建空闲任务,不能让CPU空闲下来

(9)configMAX_TASK_NAME_LEN宏定义配置

#define configMAX_TASK_NAME_LEN                         16                      
/* 定义任务名最大字符数, 默认: 16 */

(10) configUSE_16_BIT_TICKS宏定义配置

#define configUSE_16_BIT_TICKS                          0                     
  /* 1: 定义系统时钟节拍计数器的数据类型为16位无符号数, 无默认需定义 */

        此宏用于定义系统节拍计数器的数据类型,当宏 configUSE_16_BIT_TICKS 设置为 1 时, 系统节拍计数器的数据类型为 16 位无符号整形;当宏 configUSE_16_BIT_TICKS 设置为 0 时, 系统节拍计数器的数据类型为 32 为无符号整型。

(11)configIDLE_SHOULD_YIELD宏定义配置

#define configIDLE_SHOULD_YIELD                         1                       
/* 1: 使能在抢占式调度下,同优先级的任务能抢占空闲任务, 默认: 1 */

        当宏 configIDLE_SHOULD_YIELD 设置为 1 时,在抢占调度下,同等优先级的任务可抢占 空闲任务,并延用空闲任务剩余的时间片。

(12)configUSE_TASK_NOTIFICATIONS宏定义配置

#define configUSE_TASK_NOTIFICATIONS                    1                      
 /* 1: 使能任务间直接的消息传递,包括信号量、事件标志组和消息邮箱, 默认: 1 */

        当宏 configUSE_TASK_NOTIFICATIONS 设置为 1 时,开启任务通知功能。当开启任务通 知功能后,每个任务将多占用 8 字节的内存空间。

(13) configTASK_NOTIFICATION_ARRAY_ENTRIES宏定义配置

#define configTASK_NOTIFICATION_ARRAY_ENTRIES           1                       
/* 定义任务通知数组的大小, 默认: 1 */

        此宏用于定义任务通知数组的大小。

(14) configUSE_MUTEXES宏定义配置

#define configUSE_MUTEXES                               1                       
/* 1: 使能互斥信号量, 默认: 0 */

        此宏用于使能互斥信号量,当宏 configUSE_MUTEXS 设置为 1 时,使能互斥信号量;当宏 configUSE_MUTEXS 设置为 0 时,则不使能互斥信号量。

(15)configUSE_RECURSIVE_MUTEXES宏定义配置

#define configUSE_RECURSIVE_MUTEXES                     1                       
/* 1: 使能递归互斥信号量, 默认: 0 */

        此宏用于使能递归互斥信号量,当宏 configUSE_RECURSIVE_MUTEXES 设置为 1 时,使 能递归互斥信号量;当宏 configUSE_RECURSIVE_MUTEXES 设置为 0 时,则不使能递归互斥 信号量。

(16) configUSE_COUNTING_SEMAPHORES宏定义配置

#define configUSE_COUNTING_SEMAPHORES                   1                      
 /* 1: 使能计数信号量, 默认: 0 */

        此宏用于使能计数型信号量,当宏 configUSE_COUNTING_SEMAPHORES 设置为 1 时, 使能计数型信号量;当宏 configUSE_COUNTING_SEMAPHORES 设置为 0 时,则不使能计数 型信号量。

(17)configUSE_ALTERNATIVE_API宏定义配置

#define configUSE_ALTERNATIVE_API                       0                       /* 已弃用!!! */

        此宏在 FreeRTOS V9.0.0 之后已弃用。

(18)configQUEUE_REGISTRY_SIZE宏定义配置

#define configQUEUE_REGISTRY_SIZE                       8                       /* 定义可以注册的信号量和消息队列的个数, 默认: 0 */

        此宏用于定义可以注册的队列和信号量的最大数量。此宏定义仅用于调试使用。

(19) configUSE_QUEUE_SET宏定义配置

        此宏用于使能队列集,当宏 configUSE_QUEUE_SETS 设置为 1 时,使能队列集;当宏 configUSE_QUEUE_SETS 设置为 0 时,则不使能队列集。

#define configUSE_QUEUE_SETS                            1                      
 /* 1: 使能队列集, 默认: 0 */

(20)configUSE_TIME_SLICING宏定义配置

#define configUSE_TIME_SLICING                          1                       
/* 1: 使能时间片调度, 默认: 1 */

        此宏用于使能时间片调度,当宏 configUSE_TIMER_SLICING 设置为 1 且使用抢占式调度 时,使能时间片调度;当宏 configUSE_TIMER_SLICING 设置为 0 时,则不使能时间片调度。

(21)configUSE_NEWLIB_REENTRANT宏定义配置

#define configUSE_NEWLIB_REENTRANT                      0                      
 /* 1: 任务创建时分配Newlib的重入结构体, 默认: 0 */

        此宏用于为每个任务分配一个 NewLib 重 入 结 构 体 , 当 宏 configUSE_NEWLIB_REENTRANT 设置为 1 时,FreeRTOS 将为每个创建的任务的任务控制块 正点原子 FreeRTOS 开发教程 57 FreeRTOS 开发指南 中分配一个 NewLib 重入结构体。

(22)configENABLE_BACKWARD_COMPATIBILITY宏定义配置

#define configENABLE_BACKWARD_COMPATIBILITY             0                       
/* 1: 使能兼容老版本, 默认: 1 */

        此宏用于兼容 FreeRTOS 老版本的 API 函数。

(23)configNUM_THREAD_LOCAL_STORAGE_POINTERS宏定义配置

#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         0                      
 /* 定义线程本地存储指针的个数, 默认: 0 */

        此宏用于在任务控制块中分配一个线程本地存储指着数组,当此宏被定义为大于 0 时, configNUM_THREAD_LOCAL_STORAGE_POINTERS 为线程本地存储指针数组的元素个数; 当宏 configNUM_THREAD_LOCAL_STORAGE_POINTERS 为 0 时,则禁用线程本地存储指针 数组。

(24)configSTACK_DEPTH_TYPE宏定义配置

#define configSTACK_DEPTH_TYPE                          uint16_t               
 /* 定义任务堆栈深度的数据类型, 默认: uint16_t */

        此宏用于定义任务堆栈深度的数据类型,默认为 uint16_t。

(25) configMESSAGE_BUFFER_LENGTH_TYPE宏定义配置

#define configMESSAGE_BUFFER_LENGTH_TYPE                size_t                  
/* 定义消息缓冲区中消息长度的数据类型, 默认: size_t */

        此宏用于定义消息缓冲区中消息长度的数据类型,默认为 size_t。

二、内存分配相关定义

1. configSUPPORT_STATIC_ALLOCATION宏定义配置

#define configSUPPORT_STATIC_ALLOCATION                 0                       
/* 1: 支持静态申请内存, 默认: 0 */

        当宏 configSUPPORT_STSTIC_ALLOCATION 设置为 1 时,FreeRTOS 支持使用静态方式 管理内存,此宏默认设置为 0。如果将 configSUPPORT_STATIC_ALLOCATION 设置为 1,用户 还 需 要 提 供 两 个 回 调 函 数 : vApplicationGetIdleTaskMemory() 和 vApplicationGetTimerTaskMemory(),更详细的内容请参考第六章的“静态创建与删除任务实验”。 2. configSUPPORT_DYNAMIC_ALLOCATION宏定义配置

#define configSUPPORT_DYNAMIC_ALLOCATION                1                       
/* 1: 支持动态申请内存, 默认: 1 */

        当宏 configSUPPORT_DYNAMIC_ALLOCATION 设置为 1 时,FreeRTOS 支持使用动态方 式管理内存,此宏默认设置为 1。

3. configTOTAL_HEAP_SIZE宏定义配置

#define configTOTAL_HEAP_SIZE                           ((size_t)(10 * 1024))   
/* FreeRTOS堆中可用的RAM总量, 单位: Byte, 无默认需定义 */

        此宏用于定义用于 FreeRTOS 动态内存管理的内存大小,即 FreeRTOS 的内存堆,单位为 Byte。

4. configAPPLICATION_ALLOCATED_HEAP宏定义配置

#define configAPPLICATION_ALLOCATED_HEAP                0                       
/* 1: 用户手动分配FreeRTOS内存堆(ucHeap), 默认: 0 */

        此宏用于自定义 FreeRTOS 的内存堆,当宏 configAPPLICATION_ALLOCATED_HEAP 设 置为 1 时,用户需要自行创建 FreeRTOS 的内存堆,否则 FreeRTOS 的内存堆将由编译器进行分 配。利用此宏定义,可以使用 FreeRTOS 动态管理外扩内存。

5. configSTACK_ALLOCATION_FROM_SEPARATE_HEAP宏定义胚配置

#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP       0                      
 /* 1: 用户自行实现任务创建时使用的内存申请与释放函数, 默认: 0 */

        此宏用于自定义动态创建和删除任务时,任务栈内存的申请与释放函数pvPortMallocStack() 和vPortFreeStack(),当宏configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 设置为1是, 用户需提供 pvPortMallocStack()和 vPortFreeStack()函数。

三、钩子函数的相关定义

所谓的钩子函数就是回调函数

1. configUSE_IDLE_HOOK

#define configUSE_IDLE_HOOK                             0                       
/* 1: 使能空闲任务钩子函数, 无默认需定义  */

        此宏用于使能使用空闲任务钩子函数,当宏 configUSE_IDLE_HOOK 设置为 1 时,使能使 用空闲任务钩子函数,用户需自定义相关钩子函数;当宏 configUSE_IDLE_HOOK 设置为 0 时, 则不使能使用空闲任务钩子函数。

2. configUSE_TICK_HOOK

#define configUSE_TICK_HOOK                             0                       
/* 1: 使能系统时钟节拍中断钩子函数, 无默认需定义 */

        此宏用于使能使用系统时钟节拍中断钩子函数,当宏 configUSE_TICK_HOOK 设置为 1 时, 使 能 使 用 系 统 时 钟 节 拍 中 断 钩 子 函 数 , 用 户 需 自 定 义 相 关 钩 子 函 数 ; 当 宏 configUSE_TICK_HOOK 设置为 0 时,则不使能使用系统时钟节拍中断钩子函数。

3. configCHECK_FOR_STACK_OVERFLOW

#define configCHECK_FOR_STACK_OVERFLOW                  0                       
/* 1: 使能栈溢出检测方法1, 2: 使能栈溢出检测方法2, 默认: 0 */

        此宏用于使能栈溢出检测,当宏 configCHECK_FOR_STACK_OVERFLOW 设置为 1 时, 使用栈溢出检测方法一;当宏 configCHECK_FOR_STACK_OVERFLOW 设置为 2 时,栈溢出 检测方法二;当宏 configCHECK_FOR_STACK_OVERFLOW 设置为 0 时,不使能栈溢出检测。

4. configUSE_MALLOC_FAILED_HOOK

#define configUSE_MALLOC_FAILED_HOOK                    0                      
 /* 1: 使能动态内存申请失败钩子函数, 默认: 0 */

        此 宏 用 于 使 能 使 用 动 态 内 存 分 配 失 败 钩 子 函 数 , 当configUSE_MALLOC_FAILED_HOOK 设置为 1 时,使能使用动态内存分配失败钩子函数,用 户需自定义相关钩子函数;当宏 configUSE_MALLOC_FAILED_HOOK 设置为 0 时,则不使能 使用动态内存分配失败钩子函数。

5. configUSE_DAEMON_TASK_STARTUP_HOOK

#define configUSE_DAEMON_TASK_STARTUP_HOOK              0                      
 /* 1: 使能定时器服务任务首次执行前的钩子函数, 默认: 0 */

        此 宏 用 于 使 能 使 用 定 时 器 服 务 任 务 首 次 执 行 前 的 钩 子 函 数 , 当 宏 configUSE_DEAMON_TASK_STARTUP_HOOK 设置为 1 时,使能使用定时器服务任务首次执 行前的钩子函数,此时用户需定义定时器服务任务首次执行的相关钩子函数;当宏 configUSE_DEAMON_TASK_STARTUP_HOOK 设置为 0 时,则不使能使用定时器服务任务首 次执行前的钩子函数。

四、运行时间和任务状态统计相关定义

1. configGENERATE_RUN_TIME_STATS

#define configGENERATE_RUN_TIME_STATS                   0                      
 /* 1: 使能任务运行时间统计功能, 默认: 0 */

        此宏用于使能任务运行时间统计功能,当宏 configGENERATE_RUN_TIME_STATS 设置为 正点原子 FreeRTOS 开发教程 59 FreeRTOS 开发指南 1 时,使能任务运行时间统计功能,此时用户需要提供两个函数,一个是用于配置任务运行时 间统计功能的函数 portCONFIGURE_TIMER_FOR_RUN_TIME_STATS(),一般是完成定时器的 初始化,另一个函数是 portGET_RUN_TIME_COUNTER_VALUE(),该函数用于获取定时器的 计时值;当宏 configGENERATE_RUN_TIME_STATS 设置为 0 时,则不使能任务运行时间统计 功能。

2. configUSE_TRACE_FACILITY

#define configUSE_TRACE_FACILITY                        1                       
/* 1: 使能可视化跟踪调试, 默认: 0 */

        此宏用于使能可视化跟踪调试,当宏 configUSE_TRACE_FACILITY 设置为 1 时,使能可 视化跟踪调试;当宏 configUSE_TRACE_FACILITY 设置为 0 时,则不使能可视化跟踪调试。

3. configUSE_STATS_FORMATTING_FUNCTIONS

#define configUSE_STATS_FORMATTING_FUNCTIONS            1                       
/* 1: configUSE_TRACE_FACILITY为1时,会编译vTaskList()
和vTaskGetRunTimeStats()函数,默认: 0 */

        当此宏与 configUSE_TRACE_FACILITY 同时设置为 1 时,将编译函数 vTaskList()和函数 vTaskGetRunTimeStats(),否则将忽略编译函数 vTaskList()和函数 vTaskGetRunTimeStats()。

五、软件定时器相关配置

1. configUSE_TIMERS

#define configUSE_TIMERS                                1                               
/* 1: 使能软件定时器, 默认: 0 */

        此宏用于启用软件定时器功能,当宏 configUSE_TIMERS 设置为 1 时,启用软件定时器功 能;当宏 configUSE_TIMERS 设置为 0 时,则不启用软件定时器功能。

2. configTIMER_TASK_PRIORITY

#define configTIMER_TASK_PRIORITY                       ( configMAX_PRIORITIES - 1 )   
 /* 定义软件定时器任务的优先级, 无默认configUSE_TIMERS为1时需定义 */

        此宏用于设置软件定时器处理任务的优先级,当启用软件定时器功能时,系统会创建一个 用于处理软件定时器的软件定时器处理任务。

3. configTIMER_QUEUE_LENGTH

#define configTIMER_QUEUE_LENGTH                        5                             
  /* 定义软件定时器命令队列的长度, 无默认configUSE_TIMERS为1时需定义 */

        此宏用于定义软件定时器队列的长度,软件定时器的开启、停止与销毁等操作都是通过队 列实现的。

4. configTIMER_TASK_STACK_DEPTH

#define configTIMER_TASK_STACK_DEPTH                    ( configMINIMAL_STACK_SIZE * 2) /* 定义软件定时器任务的栈空间大小, 无默认configUSE_TIMERS为1时需定义 */

        当启用软件定时器功能时,系统会创建 一个用于处理软件定时器的软件定时器处理任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如果制作投票选举投票制作制作一个投票在线制作投票

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

CORS如何实现跨域(前端+后端代码实例讲解)

书接上回,上一篇文章讲解了用 jsonp 来解决跨域问题,这篇文章讲解另外一种方法也可以解决跨域问题,那就是CORS(跨源资源共享)。 什么是CORS? 下面是官方的解释:跨源资源共享(CORS&a…

刚去了家新公司,发现个个都是卷王 , 想离职了。。

个个都说想躺平了,可是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,才工作一年,跳槽到我们公司起薪15K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

性能测试什么时候开始?性能测试流程介绍

目录 性能测试什么时候开始? 一、制定性能测试目标 二、性能测试场景获取 三、性能测试数据确定 四、性能测试用例设计 五、性能测试环境准备与搭建 六、做脚本 七、跑场景 八、做监控 九、分析调优 十、回归测试 十一、出图写报告 总结: 性能测试什么…

STM32——建工程

文章目录 一、建工程步骤1. 创建一个工程文件2. 里面创建四个文件3. Lib:存放标准库的.c和.h文件,其中inc放置.h文件,src放置.c文件4. Startup中存放驱动文件5.User文件中包含以下路径以下文件6.创建工程Project 一、建工程步骤 以STM32F10X…

若依不分离,弹层自定义按钮

记录下遇到的两种情况 第一种:点击按钮,打开第三方链接去支付,因为只需要显示一个关闭按钮 代码: // 表格操作列 {title: 操作,align: center,formatter: function (value, row, index) {var actions [];if (row.status1) {acti…

NAMD分子动力学模拟在生物及材料计算中的应用专题

第一天 时间 :第一天上午 内容:一:分子动力学相关软件及Linux入门 目标:了解NAMD软件,掌握NAMD安装环境,了解Linux语言 二:VMD可视化软件的安装和使用 三:研究对象模型获取,构建以及优化 主要…

7-WebApis-5

Web APIs - 5 目标: 能够利用JS操作浏览器,具备利用本地存储实现学生就业表的能力 BOM操作综合案例 js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如:变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型&#xff…

LeetCode 445.两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 https://leetcode.cn/problems/add-two-numbers-ii/description/ c…

Elasticsearch全⽂检索

以下说明&#xff1a;其中比喻都是以mysql为模板进行比较说明 一.lucene 1.jar包环境准备 <!-- 引入Lucene核心包及分词器包 --><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>…

82、基于stm32单片机音乐喷泉设计播放器频谱彩灯系统设计(程序+原理图+参考论文+开题报告+任务书+设计资料+元器件清单等)

摘 要 随着人们生活水平的提高和建立绿色城市的向往&#xff0c;音乐喷泉以其独特的魅力和特殊的功能&#xff0c;愈来愈成为休闲娱乐产业中的一项重要产品,音乐喷泉的兴建也越来越多。 根据目前音乐喷泉的发展现状&#xff0c;介绍了一个以STM32单片机为核心的小型音乐喷泉控…

Fiddler过滤器 Filters 详解

目录 前言&#xff1a; 一、 Hosts 过滤 &#xff08;较常用&#xff09; 二、Client Process 过滤&#xff08;客户端进程过滤&#xff0c;通过配置只过滤/不过滤哪些进程的请求。用的不多&#xff09; 三、Request Headers &#xff08;根据请求头信息进行过滤。常用&…

wireshark抓包工具实战

目录 参考一、关于Wireshark二、下载及安装三、基本概念每层类型Ethernet以太网层&#xff08;MAC地址&#xff09;协议目的地址 Internet网络层协议报文 Transmission传输层协议 三、tcp抓包三次握手连接四次握手断开http协议请求协议包应答协议包文件类型 参考 网络抓包工具…

Docker容器技术 详解!!!

目录 一、概述 &#xff08;一&#xff09;docker介绍 &#xff08;二&#xff09;为什么使用Docker &#xff08;三&#xff09;docker优势 1、运行环境的一致性&#xff1a; 2、更快速地启动部署&#xff1a; 3、更好的隔离性&#xff1a; 4、弹性伸缩、快速扩展&…

FreeRTOS_任务切换

目录 1. RendSV 异常 2. FreeRTOS 任务切换场合 2.1 执行系统调用 2.2 系统滴答定时器&#xff08;SysTick&#xff09;中断 3. PendSV 中断服务函数 4. 查找下一个要运行的任务 4.1 通用方法 4.2 硬件方法 5. FreeRTOS 的时间片调度 6. 时间片调度实验 6.1 实验程序…

Pushgetway安装和使用

1、Pushgetway安装和使用 1.1 Pushgateway是什么 pushgateway 是另一种数据采集的方式&#xff0c;采用被动推送来获取监控数据的prometheus插件&#xff0c;它可以单独运行在 任何节点上&#xff0c;并不一定要运行在被监控的客户端。 首先通过用户自定义编写的脚本把需要监…

ClickHouse浅谈

文章目录 前置知识什么是OLAP与OLTP行式数据库与列式数据库什么是行式和列式&#xff1f;行式和列式的优缺点 ClickHouse什么是clickhouse&#xff1f;clickhouse的使用架构clickhouse的优点和缺点clickhouse的功能特性计算层服务层向量化引擎 clickhouse的使用案例与其他OLAP相…

如何打开远程电脑的任务管理器?

关于任务管理器 任务管理器可以显示远程计算机后台运行的进程和应用程序及其使用状态。通过任务管理器提供的信息&#xff0c;您可以了解是否有程序或进程占用过多的CPU和内存&#xff0c;然后您可以选择结束应用程序或结束进程以提高远程电脑的运行速度。 如何访问远程电脑上…

SD 系统自动计算的税额 有差异

SD 系统自动计算的税额 有差异 1,002,000.00 * 13% 115,274.34 产生了0.03的价格舍入差异 &#xff08;保存前是正确的&#xff0c;保存后产生差异&#xff09; 解决办法&#xff1a;取消条件类型组条件即可

辅助行走机器人开发 —— 下位机控制

文章目录 总体设计硬件选型控制模式程序流程1 初始化2 FreeRTOSBalance_taskMPU6050_taskShow_taskLed_taskPs2_taskData_task 3 中断串口中断 辅助行走机器人开发项目总结 总体设计 项目分为语音模式、导航模式和手动模式。 语音模式、导航模式为ROS下发控制指令&#xff1…