- 博客(45)
- 资源 (7)
- 收藏
- 关注
原创 FreeRTOS任务管理
一个任务不能执行结束,否则会进入prvTaskExitError函数,在此关闭所有的中断,所有的任务将都不能执行。每个任务运行这个函数时,任务A的局部变量放在任务A的栈里,任务B的局部变量放在任务B的栈里,不同任务的局部变量,有自己的副本。我们可以添加一个空闲任务的钩子函数(Idle Task Hook Functions),空闲任务的循。⚫ Task3 运行期间, Task1、 Task2 也处于非运行状态,但是它们随时可以运行。同一个函数,可以用来创建多个任务,换句话说,多个任务可以运行同一个函数;
2024-06-15 15:15:42
722
原创 FreeRTOS 源码概述
移植时用到的头文件:Middlewares\Third_Party\FreeRTOS\Source\portable\[compiler]\[architecture]FreeRTOS本身的头文件:Middlewares\Third_Party\FreeRTOS\Source\include。文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下,它也是放。Src目录下的freertos.c是STM32CubeMX创建的默认人物。
2024-06-10 12:42:36
953
原创 堆和栈(heap and stack)
0x8000154 跳转到a_func,LR=0x80001be,保存执行到位置,PC=0x8000154,跳转到的位置。2、栈:也是一块内存空间,cpu的sp寄存器指向它,它可以用于函数调用、局部变量、多任务系统里保存现场。#将r3到r6寄存器和lr入栈,起站位作用。将0x41(65)放入r5寄存器。将0x(63)放入r0寄存器。将0x64(100)放入r0寄存器。
2024-06-10 11:37:28
222
原创 汇编语言(keil)
Branch and Link,先把返回地址保存在LR寄存器里面再跳转。读地址“R1+4”,得到的4字节数据存入R0。把R0的4字节数据写入地址“R1+4”。CMP R0,R1;结果保存在PSR(程序状态寄存器)Branch,直接跳转。2、写内存:Stroe。1、读内存:Load。让Keil生成反汇编。
2024-06-08 20:48:28
584
原创 裸机程序设计模式
每发生2次中断,就执行一次喂饭程序,每发生5次中断,就执行一次回一个信息。while循环里面的是后台程序,中断里是前台程序,中断程序的执行是非常及时的,但是如果中断函数执行很长,就会造成后台程序运行不及时。while循环里有两个函数,这两个函数之间有影响,一个函数运行时间较长,另一个函数就迟迟无法运行。改进后,将两个程序都写成前台程序(中断程序),但是如果两个程序同时需要执行,那么就会受影响。那么就可以启动一个定时器,让。使用状态机模式,可以解决裸机程序的难题:假设有 A、 B 两个都很耗时的函数,怎样。
2024-06-05 21:43:48
465
原创 CAN总线
CAN总线(Controller Area Network Bus)控制器局域网总线.CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。
2024-04-25 15:45:08
6311
原创 动态库(共享库)的制作和使用
共享库在程序编译时并不会被连接到目标代码中, 而是在程序运行是才被载入. 不同的应用程序如果调用相同的库, 那么在内存里只需要有一份该共享库的拷贝, 规避了空间浪费问题.动态库在程序运行时才被载入, 也解决了静态库对程序的更新、部署和发布会带来麻烦. 用户只需要更新动态库即可, 增量更新. 为什么需要动态库, 其实也是静态库的特点导致.按照习惯, 一般以”.so”做为文件后缀名. 共享库的命名一般分为三个部分:前缀:lib库名称:自己定义即可, 如test后缀:.so。
2023-06-08 14:59:12
915
1
原创 PCL点云配准
由于错误的对应关系对于最终的刚体变换矩阵的估算会产生负面的影响,所以必须去除它们,于是我们使用随机采样一致性( Random Sample Consensus , RANSAC )估算或者其他方法剔除错误对应关系,最终只保留一定比例的对应关系,这样即能提高变换矩阵的估算精度也可以提高配准速度。是指在点云相对位姿完全未知的情况下对点云进行配准,找到一个可以让两块点云相对近似的旋转平移变换矩阵,进而将待配准点云数据转换到统一的坐标系内,可以为精配准提供良好的初始值。基于找到的关键点,我们必须。
2023-06-05 10:22:20
1476
原创 PCl 区域增长算法
这样做的原因是曲率最小的点位于平坦区域(从最平坦区域增长可以减少分段总数)。直到云中没有未标记的点,算法选择具有最曲率值小的点并开始区域的增长。测试每个邻居的法线与当前种子点法线之间的角度。之后,测试每个邻居的曲率值。如果点法线之间的偏差小于平滑度阈值,则建议它们位于同一聚类中(新点 - 测试点 - 将添加到聚类中)。如果两个点的法线偏差很小,则测试它们曲率之间的差异。如果该值小于曲率阈值,则算法将使用新添加的点继续集群的增长。因此,此算法的输出是一组聚类,其中每个聚类是一组被视为同一光滑表面一部分的点。
2023-05-31 10:46:43
561
原创 KNN分类器
何谓K近邻算法,即K-NearestNeighboralgorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:分析一个人时,我们不妨观察和他最亲密的几个人。同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是KNN(k最近邻)的方法。简单来说,KNN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑出离这个数据最近的K个点,看看这K个点属于什么类型,然后用少数服从多数的原则,给新数据归类。...
2022-07-16 17:45:43
4758
原创 LDA分类器
(1)介绍LDA分类器的原理和算法流程,并且熟练的运用LDA算法进行两类样本的分类运算;(2)运用LDA算法对两类样本进行分类运算:
2022-07-16 17:42:11
1577
原创 AnyControl Demo演示
Demo01 两个输入值IN1和IN2(REAL数据类型),一个标志位K(BOOL数据类型),如果K为TRUE,则输出IN1,如果K为FALSE则输出IN1和IN2的平均值。
2022-07-16 17:30:01
1570
原创 Solidworks模型导入Vrep(CoppeliaSim Edu)
Solidworks模型导入Vrep(CoppeliaSim Edu)
2022-07-06 22:03:20
6178
4
原创 vrep中视觉传感器(Vision sensor)
Vision sensors分为正交投影型(Orthographic projection-type)和透视投影型(Perspective projection-type)
2022-07-05 08:31:43
3226
原创 Vrep中力传感器(Force sensor)
在CoppeliaSim中提供了如下图所示的力矩传感器,它可以测量沿着x, y, z三个坐标轴方向上的力以及绕这三个轴的扭矩。
2022-07-04 15:19:30
2275
使用vrep软件,设计了⼀个简易的迷宫,在迷宫中实现相关的路径规划算法(使⽤⼈⼯势场或RRT路径规划算法中的⼀种或多种算法.)
2024-06-23
vrep多车道中进行变道避障
2024-06-23
vrep基于视觉的寻迹小车
2024-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人