编程者也
这个作者很懒,什么都没留下…
展开
-
FreeRtos-11定时器
也就是说:我们每次触发定时器后,就需要尽快去执行守护任务,就需要提高它的优先级让它先执行(我们的tick中断中只负责任务调度);通过这里我们可以看到:一旦我们将守护任务的优先级设置低于用户任务,那怕我们在用户任务中Timestart也还是无法运行定时器回调函数。这个函数(我们需要知道这个函数的优先级,如果它的优先级太低会被高优先级打断,在触发后它应该马上去执行定时器的任务函数)所以,我们的回调函数的是在某个任务中执行(类似于空闲任务的钩子函数一样),这个任务叫做。在下面我们就创建了一个守护任务的函数。原创 2024-06-13 18:52:16 · 133 阅读 · 0 评论 -
FreeRtos-10任务通知
任务通知的发送者和接收者是多对一的问题(使用任务通知时,只能通知指定任务)发送方:要么发送成功或者失败(不能等待),接收方:可以等待(因为TCB结构体里面没有list让发送者阻塞在上面,所以发送者不会阻塞)原创 2024-06-11 22:59:52 · 6 阅读 · 0 评论 -
FreeRtos-09事件组的使用
事件组:就是通过一个整数的bit位来代表一个事件,几个事件的or和and的结果是输出。原创 2024-06-11 16:12:53 · 105 阅读 · 0 评论 -
FreeRtos-08互斥量
二进制信号量并不能保证谁上锁谁解锁的问题,虽然二进制信号量可以实现互斥,但是这种互斥是有问题的;所以,我们引入了互斥量主要是为了解决优先级反转和递归上锁/解锁的问题。互斥量的出现,主要是为了更好的保证资源独占(同一时刻只有一个任务在占领资源)和竞争造成的数据出错,比如06中的数据竞争导致sum的值出问题FreeRtos的互斥量并没有实现谁上锁,就由谁解锁的问题,只能靠程序员来实现。原创 2024-06-06 23:07:28 · 9 阅读 · 0 评论 -
FreeRtos-07信号量
计数型信号量(也称为二进制信号量或互斥信号量)主要用于控制对共享资源的访问,实现任务的同步,但它本身并不直接提供数据的完整性或一致性的保护。当多个线程或进程访问共享数据时,可能会发生数据竞争(data race)或其他并发问题,这些问题可能导致数据不一致或损坏。原创 2024-06-06 16:44:33 · 8 阅读 · 0 评论 -
FreeRtos-06队列的管理
1.创建队列函数/*第一个参数是队列长度;第二个参数是队列里面元素的数据类型大小(字节)队列创建成功后,会返回一个句柄,创建失败返回0*/2.队列的TCB结构体和任务创建一样,在创建完队列后,它也会返回一个类似的TCB句柄union} u;} xQUEUE;* `pcHead`:通常指向队列存储区域的起始地址。它是不移动的,环形Buf的头指针* `pcWriteTo`:指向队列中下一个要写入数据的位置。原创 2024-06-03 23:22:10 · 10 阅读 · 0 评论 -
FreeRtos-05同步和互斥
我们根据这两个对比可以看到,在任务一执行的过程中,我们的任务二会一直去访问计算结束标志位,造成CPU资源的浪费;所以两个任务同步实现所占用的时间比一个任务完成的时间会多30ms左右。同步的缺点:在等待期间不停访问,造成CPU资源浪费互斥不稳定的原因是detT太长了。原创 2024-06-01 23:02:02 · 11 阅读 · 0 评论 -
FreeRtos-04任务管理
对FreeRtos的任务管理进行深入分析原创 2024-05-28 21:33:21 · 13 阅读 · 0 评论 -
FreeRtos-03删除任务、栈溢出现象
volatile主要是防止变量被编译器过度优化。原创 2024-05-23 23:29:20 · 15 阅读 · 0 评论 -
FreeRtos-02动态静态创建任务
二、静态创建任务2.1静态创建任务代码函数原型三、动态创建任务与静态创建任务的区别 使用静态创建任务时,开发者需要指定空闲任务的栈大小和TCB大小;而使用动态创建任务时,FreeRTOS会自动管理这些内存分配。 在FreeRTOSConfig.h中增加定义 接着出现其他报错Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).原创 2024-05-23 15:48:18 · 109 阅读 · 0 评论 -
使用Source Insight对RTOS工程进行管理
在我们选中文件夹时:按住Ctrl就可以依次选中(在Ctrl all时,按住Ctrl点击就可以依次取消选中)原创 2024-05-23 09:11:42 · 10 阅读 · 0 评论 -
FreeRtos-01栈与堆
堆由程序员手动申请、手动释放;栈由程序分配,函数结束、自动释放。原创 2024-05-18 15:24:21 · 73 阅读 · 0 评论