自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 FreeRTOS学习 -- 12、内存管理

(1)创建任务、队列、信号量等对象时,两种内存创建方法:自动地从FreeRTOS管理的内存堆中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回FreeRTOS管理的内存堆。需用户提供各种内存空间,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间一般没有其他用途。动态方式管理内存比静态方式管理内存更加灵活。占用大量的代码空间不适合用在资源紧缺的嵌入式系统中没有线程安全的相关机制运行有不确定性,每次调用这些函数时花费的时间。

2024-03-26 21:38:13 993

原创 FreeRTOS学习 -- 11、低功耗模式(Tickless)

RTOS在一般的应用中,处理器大量的时间都在处理空闲任务,此时可以考虑让处理器在空闲任务的时候进入低功耗模式。当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。FreeRTOS就是通过在处理器处理空闲任务的时候将处理器设置为低功耗模式来降低功耗。一般会在空闲任务的钩子函数中执行低功耗相关处理。比如设置处理器进入低功耗模式、关闭其他外设时钟、降低系统主频等等。

2024-03-26 13:44:20 458

原创 FreeRTOS -- 10、FreeRTOS任务通知

每个任务有一个32位的通知值在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)。使用队列、信号量、事件标志组时都需另外创建一个结构体,通过中间的结构体进行间接通信!使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的"通知"不覆盖接受任务的通知值【类似队列不覆写】覆盖接受任务的通知值【类似队列覆写】更新接受任务通知值的一个或多个bit【类似任务标志组】增加接受任务的通知值【类似信号量】

2024-03-24 16:55:00 708 1

原创 FreeRTOS学习 -- 9、FreeRTOS软件定时器

定时器是指从某个时刻开始,经过一个指定的时间后触发一个超时的事件,用户可以自定义定时器的定时周期。芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时间到达之后就会自动触发一个中断,用户在中断服务函数中处理信息。具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息。软件定时器的回调函数是在定时器服务任务中执行的,因此在回调函数中不能够调用任何会阻塞任务的API函数。

2024-03-24 15:31:05 758 1

原创 FreeRTOS学习 -- 8、事件标志组

事件组就是一组的事件位,事件组中的事件位通过位编号来访问事件标志组中的bit0表示队列中的消息是否处理掉;事件标志组中的bit1表示是否有消息需要从网络中发出去;事件标志组中的bit2表示现在是否需要向网络发送心跳信息。事件组的数据类型为,当configUSE_16_BIT_TICKS为1的时候,事件标志组可以存8个事件位,当configUSE_16_BIT_TICKS为0的时候,事件标志组可以存24个事件位。一个事件组就包含了一个数据类型。

2024-03-21 21:39:21 955 1

原创 FreeRTOS学习 -- 7、信号量

二值信号量、计数信号量、互斥信号量的创建函数不同,但是释放和获取均相同,此外注意,互斥信号量在中断中无法使用,所有没有中断中释放/获取信号量二值信号量、计数信号量、互斥信号量的创建函数不同,但是底层调用的都是同一个API(队列创建函数),只是内部机制不同、某些参数不同,创建的信号量储存结构只有结构体,没有队列项,依靠变量uxMessagesWaiting储存信号量信息二值信号量、计数信号量、互斥信号量的释放信号量通用,底层调用与队列写入函数相同,只是参数不同。

2024-03-20 22:29:23 688 1

原创 FreeRTOS学习 -- 6、任务状态或信息查询API函数

参数:pxTaskStatusArray:指向TaskStatus_t 结构体数组首地址,每个任务至少需要一个 TaskStatus_t结构体,任务的数量可以使用函数uxTaskGetNumberOfTasks()。2.2 vTaskPrioritySet() -- 改变任务的任务优先级函数。返回值:UBaseType_t:获取到的对应任务的优先级。参数:xTask:要查找任务的任务句柄;参数:xTask:要查找任务的任务句柄;返回值:统计到任务状态的个数。

2024-03-19 20:33:43 142 1

原创 FreeRtos学习--7、队列

队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递),FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥、计数型信号量、二值信号量、 递归互斥信号量,因此很有必要深入了解 FreeRTOS 的队列。

2024-03-18 21:17:54 1030

原创 C语言基础知识汇总

告诉编译器变量的名称和类型。它使编译器知道变量存在,并为其预留存储空间。定义不仅告诉编译器变量的名称和类型,还为变量分配内存空间。

2024-01-23 08:34:34 874 1

原创 FreeRTOS学习--5、列表与列表项

(4)、获取要插入点,在初始化列表的时候xListEnd的列表值也是portMAX_DELAY,此时要插入的列表项的列表值也是portMAX_DELAY,插入的列表项会被放到 xListEnd 前面。通常是一个任务的任务控制块。(3)、如果列表的 pxIndex 正好指向要删除的列表项,那么在删除列表项以后要重新给pxIndex 找个“对象”啊,这个新的对象就是被删除的列表项的前一个列表项。(7)、列表项已经插入到列表中了,那么列表项的成员变量 pvContainer 也该记录此列表项属于哪个列表的了。

2024-01-13 16:02:01 914 1

原创 FreeRTOS学习--4、任务基础知识及API函数

裸机开发(不适用操作系统)时都是在一个while循环中顺序执行相应函数,有时候会加入一些中断去完成一些功能,这就是所谓单任务系统(又称前后台系统)。该系统实时性差,但该系统简单且小号资源少。前后台系统执行顺序如图所示:多任务系统将一个大问题划分为很多个小问题,然后逐个解决。这些小任务的处理是并发处理(每个任务执行时间很短,效果上就像是同一时刻执行了多个任务),这些任务执行的先后循序由任务调度器。

2023-12-24 15:06:28 860 1

原创 FreeRTOS学习--3、配置文件FreeRTOSConfig.h详解

从而实现不同的功能配置。FreeRTOS 作为一个可高度配置的实时内核,其绝大多数配置选项都体现在 FreeRTOS.h(注意是 FreeRTOS.h 不是FreeRTOSConfig.h)中。为什么这么说?打开 FreeRTOS.h 看看就知道了,这个文件唯一要干的活就是负责根据宏值来对 FreeRTOS 进行配置的。

2023-12-21 20:29:33 1152

原创 FreeRTOS学习--2、FreeRTOS移植

再次编译还是报错,因为在port.c和stm32f4xx_it.c中重复定义了函数:“PendSV_Handler ”和“SVC_Handler”,在stm32f4xx_it.c中将这两个函数注释掉,再次编译应该就没有错误了。需要注意的是,滴答定时器的中断服务函数也在在“port.c”和“stm32f10x_it.c”文件中重复定义了,需要将“stm32f10x_it.c”文件中的注释掉。在“usart.c”文件中添加“FreeRTOS.h”文件。基础工程越简单越好,可以使用一个跑马灯基础例程进行移植;

2023-12-19 22:20:48 450 1

原创 FreeRTOS学习--1、初识FreeRTOS

FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,当然,FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比uC/OSII 和 uC/OSIII 小的多。

2023-12-18 21:35:03 393 1

原创 C语言刷题—打印任意长度的菱形

目录题目描述题目分析代码分析运行结果总结题目描述输入需要打印的菱形行数,然后打印出对应的长度的菱形。例如输入长度为7,则打印出的菱形形状为: * *** ***** ******* ***** *** *题目分析假设输入打印的菱形长度为n,首先计算出上半部分的行数x=(n+1)/2,然后便可以分析上半部分...

2022-05-26 20:22:30 451

原创 C语言刷题-水仙花数及扩展

文章目录题目:打印所有的水仙花数求解方法一:枚举全部三位数运行结果求解方法二:三层for循环分别对个位、十位、百位进行0~9枚举应用扩展:求解0~10000之间的水仙花数解题思路:代码分解:运行结果:总结:题目:打印所有的水仙花数什么是水仙花数:水仙花是指一个三位数,其各位数字的立方和等于该数的本身如:153=1^3+5^3+3^3,那么153被称为水仙花数。求解方法一:枚举全部三位数通过for循环从100到999依次进行判断,是水仙花数便打.

2022-05-13 17:17:52 1300

原创 C语言刷题-求满足条件的平方数

题目:一个整数,它加上一100后是一个完全平方数,再加上168又是一个完全平方数,求这个数是多少分析:(1)首先列出关系式 x+100=n*n x+100+168=m*m (2) 根据上面两个公式,求出m和n之间的关系 m*m-n*n=168 (3)令m+n=i m-n=j 转化为i*j=168int main(){ int i = 0;...

2022-05-13 09:49:35 225

原创 C语言刷题-求日期在一年第几天

题目:输入某年某月某日,判断这一天是这一年的第几天分析:(1)首先输入年月日--scanf (2)创建数组存放每个月份的天数 (3)判断输入的年份是否为闰年,是闰年需要改变2月份的天数 (4)对每个月份的天数进行相加解法一: 创建数组存放每月份的天数:a[13],为了能够使得数组下标与月份对应,创建数组大小为13个整形,a[0]用于存放输入日期的day。int main(){ int year = 0,...

2022-05-13 09:15:04 391 1

原创 C语言刷题---求无重复三位数个数

求1-4四个数字组成的互不相同且不重复数字的三位数,都是多少以及个数。

2022-05-09 15:35:48 820 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除