- 博客(80)
- 收藏
- 关注
原创 I.MX6ULL开发板与linux互传文件的方法--NFS,SCP,mount
方法比较简单,首先在linux系统中找到u盘对应的文件夹,随后使用cp指令将文件拷贝进u盘。随后将u盘插入开发板中,找到u盘对应的设备文件。随后就能在已知文件夹下访问到u盘中的内容。
2025-04-05 20:17:43
84
原创 I.MX6ULL 交叉编译环境配置与使用
我们一般开发程序在自己的电脑上开发,运行的时候将程序烧录到板子运行。但我们的开发平台是X86架构,而I.MX6ULL是ARM架构,所以需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器。
2025-04-05 19:48:45
188
原创 嵌入式往期面经
ARM是一种基于的特点广泛应用于嵌入式系统、移动设备和物联网领域。:ARM采用RISC设计,指令集简单且高效,大多数指令在一个时钟周期内完成。ARM有16个32位通用寄存器(R0-R15),其中:R13用作,用于管理函数调用的栈帧,Cortex-M3使用:主堆栈指针(MSP):用于内核和异常处理。进程堆栈指针(PSP):用于用户任务。R14用作,保存函数返回地址。R15用作,指向当前执行的指令。还有一个,保存处理器的状态信息,如条件标志、中断状态等。
2025-04-03 09:36:31
973
原创 FreeRTOS深入浅出
RISCMachines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。
2025-02-25 12:46:54
580
原创 嵌入式软件面试总结--C/C++、STM32、FreeRTOS、Linux、计网、操作系统
内联函数(Inline Function)是一种由编译器进行处理的特殊函数,在很多编程语言中都有应用,尤其在 C 和 C++ 里较为常见。下面详细介绍内联函数的定义、原理、使用原因以及优缺点。在 C++ 中,通过在函数定义或声明前加上inline关键字来指定一个函数为内联函数。当编译器遇到内联函数的调用时,它不会像普通函数那样进行函数调用的常规操作(如保存调用现场、跳转到函数代码处执行、返回结果等),而是直接将该函数的代码插入到调用该函数的地方,就好像把函数代码直接写在了调用处一样。提高性能。
2025-02-02 21:33:55
749
原创 ROS 基础
rosrun learning_parameter parameter_config 运行配置文件。rosrun learning_service person_client 运行client端。rosrun learning_service person_server 运行server端。rosrun learning_topic person_subscriber 运行订阅者。rosrun learning_topic person_publisher 运行发布者。catkin_make 编译。
2025-02-02 21:33:20
566
原创 QT 中 SQLite 使用方法
插入语句:insert into (table1, table2,…创建数据库方法:create table (f1 type1, f2 type2,…查询语句:select , , …:表示该列为可变长字符串,默认只能存储英文和数字或者utf-8,最多存储40个字节.:表示该列为整数递增,如果为空时则自动填入1,然后在下面的每一行都会自动+1,:则表示该列作为列表的主键,通过它可以轻易地获取某一行数据。:表示该列为带符号的整数。:表示该列的内容不为空。
2024-11-27 22:02:54
862
原创 C转C++学习笔记--基础知识摘录总结
C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。与 C++ 数组相比,vector 具有更多的灵活性和功能,使其成为 C++ 中常用的数据结构之一。vector 是 C++ 标准模板库(STL)的一部分,提供了灵活的接口和高效的操作。基本特性:动态大小vector的大小可以根据需要自动增长和缩小。连续存储vector中的元素在内存中是连续存储的,这使得访问元素非常快速。
2024-11-07 14:07:13
1008
原创 嵌入式Linux学习笔记(7)-Socket网络编程
Socket API提供了一系列函数来创建、连接、发送和接收数据等操作。嵌入式 Linux 系统中的 Socket 网络编程是指在嵌入式系统中使用进行网络通信。Socket 网络编程可以实现各种网络通信功能,如通信和通信。
2024-09-23 19:30:05
1273
1
原创 嵌入式Linux学习笔记(6)-线程处理、线程同步、线程池(c语言实现)
线程是一种轻量级的并发执行的机制。线程是进程中的一个实体,它执行在同一进程的上下文中,共享同一内存空间,但拥有独立的栈空间。C语言的线程使用pthread库实现,通过包含头文件 pthread.h来使用相关的函数和数据类型。
2024-09-19 03:34:29
1053
原创 嵌入式Linux学习笔记(5)-进程间常见通讯方式(c语言实现)
进程间通信(IPC,InterProcess Communication)是指在多个进程之间进行数据传输和共享的机制。在操作系统中,进程是运行中的程序的实例,每个进程都有自己的内存空间和资源。进程间通信可以用于在不同的进程之间传递数据、共享资源、进行协同工作等。常见的进程间通信方式有以下几种:管道(Pipe):管道是一种半双工的通信方式,它是通过创建一个管道文件用于两个进程之间的通信。一个进程可以将数据写入管道,而另一个进程可以从管道中读取数据。
2024-09-15 21:50:26
1054
原创 嵌入式Linux学习笔记(4)-进程处理相关系统调用
进程是计算机中正在运行的程序的实例。它是操作系统分配资源和调度任务的基本单位。每个进程都有自己的地址空间、内存、文件描述符、线程等资源。进程可以包括一个或多个线程,这些线程共享同一进程的资源,并在同一进程中执行并发任务。进程之间是相互独立的,彼此之间不能直接访问对方的资源,但可以通过进程间通信来进行数据交换。操作系统通过分配时间片给各个进程,使得它们在单个处理器或多个处理器上能够并发地运行。进程的创建、结束和切换是由操作系统负责管理的。
2024-09-12 19:50:20
1293
原创 嵌入式Linux学习笔记(3)-Makefile基础
makefile是一种工程管理文件,常被用于C/C++项目的编译管理。它提供了一种灵活且可扩展的方式来管理项目中的源代码和目标文件,并支持自定义编译规则和环境配置。说白了 Makefile 就类似于Linux命令行,可以选择性的编译所需文件,在一些大型项目上,如果改动小部分代码,就可以只编译这一部分代码。
2024-09-11 19:24:30
420
原创 [计算机网络]-计网学习笔记-计网知识点总结(附完整笔记)
【计算机网络微课堂(有字幕无背景音乐版)】https://www.bilibili.com/video/BV1c4411d7jb?本笔记是跟着 b站 湖科大教书匠 视频做的笔记,其中图片为视频中的 PPT,加上了自己的注释。大家可以参照着笔记看原视频。视频中的 PPT 做的非常好。完整笔记在我的资源中可以下载。
2024-09-07 15:52:32
458
原创 嵌入式Linux学习笔记(1)-Linux基础操作
vi 编辑器是一个运行在终端的文本编辑器,类似于 windows 下的记事本。它的升级版 vim 编辑器功能更丰富。vi 的基本操作是:从终端输入 vi 1.txt 后可进入一般模式;按 i 可进入编辑模式,按ESC退出编辑模式;输入“:”进入命令行模式执行各种命令,按ESC退出命令行模式;按“ :wq ” 保存修改并退出 vi。
2024-08-30 14:01:36
1049
1
原创 stm32c8t6编译错误:Error: L6406E: No space in execution regions with .ANY selector matching ...
由于 SRAM 存储器通常用于存储程序运行时的变量、栈和堆等数据。也就是说可能是代码中 Flash 或者 SRAM 占用的内存超过了板子能承受的最大内存限制。我们打开 map 文件,果不其然:c8t6 的 SRAM 只有20k,但程序所占 RW 为 28.33k。因为移植完后的代码报错,我们无法查看代码占用的实际内存,那么我们就看看移植前的代码占用内存情况。我们也可以在不影响程序正常运行的情况下修改 FreeRTOS 中的总堆大小。从 20 改到 8;我们可以在不影响程序正常运行的情况下减小最大管理内存。
2024-08-27 21:25:28
710
原创 stm32f103c8t6 程序编译后的 Program Size: Code=xxx RO-data=xxx RW-data=xxx ZI-data=xxx 是什么
之前在裸机跑一些简单的项目内存完全够用,就不会涉及到内存方面的问题。最近在学 FreeRTOS 时,将大容量的 stm32f103rct6 代码移植到 小容量的 stm32f103c8t6 上时,就遇到了内存不足的问题,所以才注意到这些东西。那么在我们编译后看到的这些东西到底代表着什么呢?在此之前我们先了解一下和。
2024-08-27 20:55:04
1795
原创 FreeRTOS 小项目--基于STM32F103智能桌面小闹钟(附完整代码)
笔者使用的是市面上最常见的这款板子做主控。DS3231与单片机通过I2C双向串行总线传输地址与数据。它的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。少于31天的月份,可自动调整月末日期,包括闰年补偿。并且提供两个可编程日历闹钟。ESP8266是一个功能强大的Wi-Fi模块,它能够轻松与其他设备进行通信,为物联网和智能家居等领域的应用提供了灵活而高效的解决方案。我们使用 esp8266 模块连接服务器来获取天气信息。
2024-08-11 16:07:54
1776
原创 24年电赛——自动行驶小车(H题)MSPM0G3507-编码电机驱动与通用PID
简单来说,编码电机的驱动主要是给一个 PWM 和一个正负级就能驱动。PWM 的大小决定转速快慢,电机的两个电源正负极不同决定了旋转的方向不同。
2024-08-03 22:59:36
1016
原创 24年电赛——自动行驶小车(H题)基于 CCS Theia -陀螺仪 JY60 代码移植到 MSPM0G3507(附代码)
只要搞懂 M0 的代码结构和 CCS 的图形化配置方法,代码移植就会变的很简单。因为本次电赛的需要,正好陀螺仪部分代码的移植是我完成的。(末尾附全部代码)
2024-08-02 21:59:02
1837
1
原创 24年电赛——自动行驶小车(H题)完赛感受
笔者大二,也算是第一次正式的打电赛省赛(大一电赛的时候还没接触32,校赛的时候就被刷下去了。。。经过一年的学习,三天两夜的校赛、两天一夜的七校联赛终于是挺到了省赛。比赛过程中真的是有太多感悟了。于是完赛第二天就赶出了这篇博客。
2024-08-02 17:29:39
2062
原创 电赛备赛--MSPM0G3507入门--基于CCS Theia 的环境搭建、例程运行、CCS Theia基本操作
因为有些 stm32 的基础,新板子的上手并不是特别难,但网上 MSPM0G3507 的资源特别少,我是跟着 b站的大佬 Torris-Yin 入门的。现在将我的学习成果分享出来,希望大家一同进步。
2024-07-27 19:32:57
8217
4
原创 FreeRTOS学习笔记-基于stm32(14)内存管理
FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请 RAM。我们在移植FreeRTOS时可以看到在 FreeRTOS 源码中有 heap_1.c、heap_2.c、heap_3.c、heap_4.c 和 heap_5.c 五种内存分配方法,我们当时移植的是 heap_4.c。标准 C 库中的和也可以实现动态内存管理,但不是线程安全的,且执行时间不确定,效率低下等等。
2024-06-12 05:00:00
536
原创 FreeRTOS学习笔记-基于stm32(13)低功耗 Tickless 模式
STM32 本身就支持低功耗模式,如图有三种模式:睡眠(Sleep)模式;停止(Stop)模式;待机(Standby)模式。
2024-06-12 04:00:00
693
原创 FreeRTOS学习笔记-基于stm32(12)软件定时器
软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能,执行功能的函数称为。相比于硬件定时器,软件定时器精度能差点(因为优先级低容易被打断)但是却不像硬件定时器那样资源有限。软件定时器的回调函数是在中执行的,所以不能在回调函数中调用任何会阻塞任务的 API 函数!比如 vTaskDelay()、 vTaskDelayUnti(),还有一些访问队列或者信号量的非零阻塞时间的 API 函数也不能调用。
2024-06-11 20:45:44
1381
原创 FreeRTOS学习笔记-基于stm32(11)任务通知及相关API函数简介
任务通知与队列,信号量,事件标志组类似,也是一种用于任务通信和同步的机制。
2024-06-11 11:19:21
951
原创 FreeRTOS学习笔记-基于stm32(9)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)
信号量是一种队列,用于任务间同步和资源管理的机制,主要用来传递状态。就像是一种特殊的“旗子”或“钥匙”,用来在不同的任务之间进行沟通和协调,确保它们能够正确地配合工作,不会互相干扰。
2024-06-05 11:37:53
1150
原创 七校联赛题铅笔姿态及笔迹检测装置--mpu6050识别数字
前几天打完比赛,收获还是挺大的,数字识别部分基本上浪费了绝大部分时间。先将思路简单说明。
2024-06-04 22:58:18
922
1
原创 FreeRTOS学习笔记-基于stm32(8)消息队列
队列是不同任务、中断中数据传递的一种机制,又称消息队列。就类似于全局变量,将数据传输到不同的任务中。但全局变量没有写保护,容易造成数据受损。而。队列类似于数组,可以存储数量有限,大小固定的数据。队列中的每个数据叫做队列项目,能存储最大队列项目的数量交队列的长度。
2024-06-04 12:46:12
723
原创 stm32标准库usart1,usrat2,usart3三个串口的配置以及printf重定向(串口输出)
我刚开始学串口时,因为要用到多个串口,自己又懒得改,总是在网上要找半天。下面将stm32的三个串口配置罗列下来,方便大家直接copy。
2024-06-03 21:35:15
4114
2
原创 基于stm32的双蓝牙主从通信—双蓝牙主从配置、串口配置、串口接收处理浮点数(附测试代码)
此次做的内容是使用 mpu6050 无线控制小车的运动。在做的过程中发现需要用到双蓝牙进行两个板子之间的通信,将主板mpu6050检测的数据传输至从板上从而控制车的移动。
2024-06-03 21:16:37
2326
原创 FreeRTOS学习笔记-基于stm32(7)任务状态查询与任务时间统计API函数
定时器使用stm32的内部定时器3,在 ConfigureTimeForRunTimeStats() 中初始化定时器并配置为每10us中断一次,然后在中断服务函数中将 FreeRTOSRunTimeTicks++,从而达到计时的目的。portCONFIGURE_TIMER_FOdR_RUN_TIME_STATS() 用来初始化用于配置任务运行时间统计的时基定时器,然后查看函数的使用条件,比如这个函数要使用的话必须将宏 INCLUDE_uxTaskPriorityGet 置1;3、在将1完成后需要实现。
2024-05-29 14:25:05
1128
原创 正点原子延时函数delay_ms延时失效的原因
今天在测试小车程序的时候使用了如下代码,,本来以为少加了个0,最后在我多次测试下来,发现在延时大约超过2s的时候就会失效。
2024-05-28 22:39:23
1204
原创 FreeRTOS学习笔记-基于stm32(6)时间片调度实验
在任务优先级相同的时候,CPU会轮流使用相同的时间去执行它,即时间片调度。这个相同的时间就是。而时间片的大小就是SysTick的中断周期(SysTick的中断周期可以修改)。比如有三个相同优先级的任务在运行,时间片大小为10ms。那么CPU前10ms执行task1,然后用10ms执行task2,再花10ms执行task3,再回到task1执行10ms,这样的轮流执行被称之为时间片流转。如果期间有一个任务执行到一半被挂载了,那么CPU就会立马抛弃这个任务执行下一个任务。
2024-05-08 22:43:00
679
1
原创 树莓派学习笔记--串口通信(配置硬件串口进行通信)
硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠;而mini串口性能低,功能单一。所以一般都使用硬件串口。树莓派的串口又分为主串口与辅助串口。主串口可以通过引脚实现通讯,而辅助串口不能使用GPIO引脚通讯且默认被分配给蓝牙端。且默认情况下。mini串口不管将它定义为主串口还是辅助串口,都是禁用的。mini串口 -> ttyS0;硬件串口 -> ttyAMA0;主串口 -> serial0;辅助串口 -> serial1;树莓派上引脚8(TX)和引脚10(RX)是作为主串口的收发端。
2024-04-25 22:19:25
3982
4
原创 树莓派学习笔记--树莓派终端基本操作与系统备份(全卡备份,压缩备份)
树莓派的官方系统是基于 Debian 的,主要是两个分区:启动分区(boot)、根分区(root),boot分区主要存放系统启动文件和驱动文件,分区格式为Fat32;PiShrink 是 Github 上开源的树莓派压缩工具,通过裁剪上面用 Win32DiskImager 或者 dd 命令全卡备份的镜像,去掉没有内容的分区,从而减小备份镜像的大小。首先将一张新的大于系统SD卡的SD卡插入树莓派中(使用读卡器),弹出的挂载信息中填入密码然后桌面就会有一个新的磁盘/dev/sda1;然后执行如下命令即可。
2024-04-25 20:53:00
1382
原创 树莓派学习笔记--Wiring Pi库的安装
在刚开始学习树莓派的时候,新版本操作系统与旧版本有一定的区别,就导致跟着网上的教程来出现了很多问题,然后网上新操作系统的教程又很少,就导致前些时间学习一直没有进展。最近终于是把这些问题解决了。所以记录下来这些东西来帮助大家一块学习。
2024-04-25 17:38:29
1896
4
21年电赛送药小车数字识别-数字模板
2024-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人