- 博客(48)
- 收藏
- 关注
原创 FreeRtos----------- 同步互斥
::::::这行代码的作用是创建一个新的任务 ,任务的名字为 ,堆栈大小为 128 字节,任务在启动时会接收到参数 ,并且该任务的优先级是 。任务句柄被设为 ,表示我们不需要保存这个任务的句柄信息。一旦任务创建成功,它会被添加到调度器中,并在合适的时机由操作系统调度执行。注意:static volatile int g_calc_end = 0;使用volatile让编译器不要去优化,否则在执行任务的时候g_calc_end时刻等于0,不执行后面的代码。 进行优化代码如下:但是在微观条件下,也有可
2024-08-19 13:57:02 973
原创 malloc申请内存
1.用static修饰局部变量:使其变为静态存储方式(静态数据区),那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中。2.用static修饰全局变量:使其只在本文件内部有效,而其他文件不可连接或引用该变量。3.用static修饰函数:对函数的连接方式产生影响,使得函数只在本文件内部有效,对其他文件是不可见的(这一点在大工程中很重要很重要,避免很多麻烦,很常见)。这样的函数又叫作静态函数。使用静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制。
2024-07-11 14:46:10 1184
原创 TCP和IP数据包结构
一般我们在谈上网速度的时候,专业上用带宽来描述,其实无论说网速或者带宽都是不准确的,呵呵。比如:1兆,512K……有些在学校的学生,也许会有疑问,明明我的业务是1M,为什么下载速度到100K就飙不上去了?512K的为什么50多K就封顶了?这里所说的1M是指1Mbps = 1 Million Bits Per Second,也就是1M比特每秒,即一秒钟传输1048576个二进制位。我们知道一个字节是8个二进制位。好,又来问题了。即便这样子,1M=1048756÷8=131072÷1024=128K。
2024-07-05 11:20:07 1262
原创 本地发路由mavlink消息
Mavlink传输时的基本单位是消息帧。协议设计的目标是传输速度和安全性。它允许消息内容检查、消息丢失检测;每个数据包需要6 字节报头。每次发完一个消息,SEQ的内容会加1,加到255后会从0重新开始。这个序号用于mavlink消息帧接收端计算消息丢失比例用的,在地面站处理中相当于是信号强度。STX:起始标志位,在v1.0版本中用“FE”表示。用于消息帧接收端进行消息解码。LEN:代表PAYLOAD的字节长度,取值0~255,用于消息帧接收端验证有效载荷长度是否正确。
2024-07-03 15:33:17 1173
原创 网络传输之osi7层模型
OSI七层模型和TCP/IP五层模型都描述了网络通信的分层结构,但在具体的层次划分和应用上有所不同。OSI模型更详细,分为七层,有助于理解和描述网络通信的每一步。而TCP/IP模型则更加简化和实用,适用于实际网络通信,是互联网的标准协议模型。在实际应用中,网络通信大多基于TCP/IP模型,但OSI模型在理论学习和参考中仍然具有重要意义。在网络术语中,“主机”是指任何连接到网络的设备,例如计算机、服务器、打印机、智能手机等。主机部分的位数决定了在该子网内可以容纳的主机数量。子网掩码。
2024-07-02 17:11:12 965
原创 C++三大特性之一:多态
静态分配:对象在栈上分配,声明时自动调用构造函数,作用域结束时自动调用析构函数。动态分配:对象在堆上分配,new操作符执行时自动调用构造函数,delete操作符执行时自动调用析构函数。在对象创建时,构造函数会自动执行,无论是静态分配还是动态分配。这是对象初始化过程的一个重要部分,确保对象在使用前被正确初始化。
2024-06-24 16:31:40 1009
原创 ROS2 概念以及通信方式
ROS 2(Robot Operating System 2)是一个用于机器人开发的开源平台,它提供了一系列工具和库,用于构建机器人应用程序。相较于前身ROS(ROS 1),ROS 2在设计上考虑了更多的实时性、安全性和可靠性因素,因此适用于更广泛的应用场景和硬件平台。以下是ROS 2的一些关键特点和概念:分布式架构:ROS 2支持分布式架构,允许节点在多个物理机器上运行,通过网络进行通信。这种架构支持更复杂和大规模的机器人系统。实时性:ROS 2引入了实时通信机制,如数据流控制(DDS),以支持严格的实时
2024-06-21 01:00:00 2085 1
原创 U-boot源码目录结构
.....“sed –e”表示后面跟的是一串命令脚本,而表达式“s/abc/def/”表示要从标准输入中,查找到内容为“abc”的,然后替换成“def”。其中“abc”表达式用可以使用“.”作为通配符。命令“uname –m”将输出主机CPU的体系架构类型。本人使用Intel 奔腾系列的CPU,因此“uname –m”输出“i686”。
2024-05-16 15:08:35 787
原创 Linux系统目录结构
树壮目录结构:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
2024-05-16 00:45:00 638
原创 Qt程序在交叉编译器上编译,ARM上运行
一般情况在:导入环境变量后查看:qmake版本及信息:执行qmake -v查看版本还有信息:这里就可以看到执行qmake时的搜索库的路径(及编译时寻找的动态库)。
2024-05-15 09:00:00 639
原创 ubuntu使用交叉编译链编译FFTW动态库
导入环境变量:为什么导入这个环境变量?3.写入配置脚本语句进行编译这行命令是用来配置 FFTW (快速傅里叶变换库)的编译和安装设置的。: 这是一个脚本,用于设置软件的编译和安装参数。它检查你的系统环境并准备编译和安装过程所需的适当设置。: 这指定了安装路径。即,FFTW 将被安装到目录下。如果不指定,默认通常是/usr/local。: 这是交叉编译的设置,指定目标主机的类型。在这里,它告诉配置脚本生成适合在 ARM 架构的 Linux 系统上运行的代码。
2024-05-14 13:14:29 1862
原创 Linux中的软连接和硬链接
在Linux系统中,软连接(符号链接)和硬链接是文件系统中两种不同类型的链接,它们用于创建对文件的引用。下面详细解释这两种链接的特点和区别:、
2024-05-08 12:53:47 1436
原创 Linux的socket详解
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议 / 网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。TCP/IP 协议存在于 OS 中,网络服务通过 OS 提供,在 OS 中增加支持 TCP/IP 的系统调用 ——Berkeley 套接字,如 Socket,Connect,Send,Recv 等。UDP(User Data Protocol,用户数据报协议)是与 TCP 相对应的协议。
2024-05-04 22:58:13 1807 1
原创 Linux中动态库的用法及优缺点?怎样制作动态库和静态库?
gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C++、java、Pascal等语言。gcc支持多种硬件平台.在 Linux 系统中,你可能会看到多个版本的 GCC 工具链,包括gccgcc-argcc-nm, 和gcc-ranlib,以及这些工具的特定版本后缀(如-7:不同的项目可能需要不同版本的 GCC 来编译,以确保最佳性能、兼容性或利用新的编译器特性。
2024-05-03 19:57:00 1243
原创 SPI协议
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。
2024-05-02 08:00:00 480
原创 Linux 内核同步机制
针对这种情况,linux内核中提供了信号量机制,此类型的同步机制在进程无法获取到临界资源的情况下,立即释放处理器的使用权,并睡眠在所访问的临界资源上对应的等待队列上;同时,如果读者在读操作期间,写进程已经发生了写操作,那么读者必须重新读取数据,以便确保得到的数据是完整的。应用背景:顺序自旋锁主要用于解决自旋锁同步机制中,在拥有大量读者进程时,写进程由于长时间无法持有锁而被饿死的情况,其主要思想是:为写进程提高更高的优先级,在写锁定请求出现时,立即满足写锁定的请求,无论此时是否有读进程正在访问临界资源。
2024-05-01 15:15:36 897
原创 CPU架构
CPU内部由ALU(算术逻辑单元)、CU(控制器)、寄存器(PC、IR、PSW、DR、通用寄存器等)、中断系统组成,外部通过总线与控制总线、数据总线、地址总线进行相连,对数据和程序进行相关的操作CPU的功能:(1)指令控制:按照顺序进行取指操作,由控制器CU完成取指和分析指令的操作。(2)操作控制:能对指令进行译码、寄存、执行的有关操作。(3)时间控制:对各种操作进行的时间实施定时。(4)数据加工:能够进行算术运算和逻辑运算,该功能的实现由ALU寄存器(算术逻辑单元)完成。
2024-04-30 11:33:43 3248
原创 蓝桥杯之MCP4017
这样设计电路的目的是:让PB14去采集MCP4017滑动变阻器上的电压,但是P12和PB14共用同一个ADC1,所以要使用通道优先级。MCP4017最大是7位,100kΩ,按比列分配。1.由于PB15和PB12。
2024-04-10 14:32:58 428
原创 蓝桥杯嵌入式之 5s按键锁定后才可以重新按
注意:这一小点也只能在定时器中断回调函数中实现。0.1s频率加80,50次频率从4000Hz加到8000Hz。在0.1秒的中断里进行计数50次。这50次奇数关闭led灯,偶数打开。形成0.1s的闪烁。可以界面下进行模式的更改,不一定是按键更改模式。5s定时到了,才更改模式。
2024-04-08 20:13:06 326
原创 蓝桥杯嵌入式之串口(中断读取)
一、CUbeMX开启串口1.开启串口USART1记得手动开起PA9、PA102.配置波特率、开启串口中断3.初始化开启接收中断定于接收缓存区 接收长度(单位字节) 4.在接收事件回调函数中进行操作 sscanf((char*)usart_box,"%4s",temp1); //只取收到的前4个字符sscanf((char*)usart_box,"%*4s%5s",temp1); //截取第四个字符后的5位字符sscanf((char*)usart_bo
2024-03-27 23:41:06 364
原创 蓝桥杯嵌入式之IIC协议————AT24C02
1芯片名是AT24C02属于以下系列:01芯片容量就是1k,02是2k,04是4k,08A是8k,16A是16k。
2024-03-22 23:16:16 490
原创 蓝桥杯嵌入式之PWM
首先,1.例如:200Hz =主频 /( Prescaler +1 XPeriod + 1)=80 000 000 /(4000 X100)= 200Hz2.周期T=1/200Hz=0.005s=5ms。
2024-03-22 06:00:00 1342 1
原创 Linux环境变量的用法
则根据用户是否为root用户(用户ID为0),设置不同的命令提示符。- 执行/etc/profile.d目录下所有可读的.sh脚本文件。- 配置Qt应用程序的环境变量,以适应Linux帧缓冲和触摸屏输入。- 分别将more和vi设置为默认的文本分页器和文本编辑器。- 其他一些环境变量和Shell选项的设置。- 配置tslib(触摸屏库)的环境变量。- 设置基本的命令搜索路径。- 如果存在命令提示符变量。
2024-03-19 20:03:15 440
原创 Linux开机应用程序自动启动脚本设置
1.使用命令查看Linux开发板或者Ubuntu的目录不管是开发板还是unbuntu都有相同的目录2.进入etc目录中的自动启动脚本目录放了很多脚本:也可以放任何东西,但是只开机执行脚本。
2024-03-19 08:00:00 4645
原创 Linux的内核配置管理
1. U-Boot :一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。
2024-03-18 17:04:58 1241
原创 STL容器
这些哈希容器都是基于哈希表实现的,提供了快速的平均时间复杂度的插入、删除和查找操作。它们通常比有序容器(如std::set和std::map)在这些操作上更高效。哈希容器的元素顺序是不确定的,因为元素在容器中的存储顺序取决于哈希函数的计算结果。
2024-03-16 23:43:09 371
原创 STL中的用哈希表实现的容器
这哈希容器都是基于哈希表实现的,提供了快速的平均时间复杂度的插入、删除和查找操作。它们通常比有序容器(如std::set和std::map)在这些操作上更高效。哈希容器的元素顺序是不确定的,因为元素在容器中的存储顺序取决于哈希函数的计算结果。
2024-03-11 23:03:44 504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人