自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cursor编辑器的使用技巧

打开资源管理器(资源管理器位置右键可设置显示),会出现KEIL UVISION PROJECT点击后面的打开keil工程按钮,选择需要打开的工程的**.uvprojx**文件。插件下方有详细的中文介绍,点击Keil Assistant插件右下角的齿轮图标设置Keil可执行文件的路径。Vscode 打开后,点击左侧插件扩展图标,搜索插件 Keil Assistant 并安装。03.VScode(Cursor)中EIDE插件的使用。

2025-12-21 20:17:56 295

原创 STM32开发(FreeRTOS实时操作系统)

3. 高效性(进程间切换涉及到进程的上下文切换、线程间可以直接切换,固然线程的并发效率更高)系统开发:使用操作系统开发,所有的驱动代码支持多进程/多线程的并发处理机制,实现快速响应、快速处理。FreeRTOS实时操作系统的任务调度机制:默认使用抢占式任务调度机制,也可以使用时间片轮询机制。裸机开发:不使用操作系统开发,所有的驱动代码都按照main函数中的执行顺序执行。优先级等级高的任务/线程先执行、优先级等级低的任务/线程后执行。基于操作系统开发的是系统开发,不基于操作系统开发的是裸机开发。

2025-11-20 14:45:54 300

原创 STM32开发(can总线)

CAN总线属于异步通讯协议,没有时钟信号线,连接在同一总线网络中各个节点会像串口异步通讯总线那样,节点间使用约定好的波特率进行通讯,在此基础上,CAN总线还会使用"位同步"的方式增强抗干扰能力,吸收误差,实现对总线电平信号进行正确的采集,确保通讯正常。当节点与总线同步时,采样点采集到的总线电平即可被确定为该位的电平信号。报文的优先级,是通过对ID的仲裁来确定的,根据前面对物理层的分析,我们知道如果总线上同时出现显性或隐性电平,总线的状态会被置为显性电平,CAN总线正是利用这个特性进行仲裁的。

2025-11-20 11:47:53 1010

原创 边缘网关开发(MQTT协议)

下载perl,编译MQTT源码依赖perl,perl不是内部的命令也不是可执行程序;将下载的Mosquitto动态库文件加入到,系统的动态库文件中。按照默认安装即可,安装完成后会自动写入环境变量。编译Mosquitto源码。安装Mosquitto。

2025-11-18 14:00:16 437

原创 MPU6050驱动配置

可以查找产品手册,查找从机地址,也可以根据第34节关于寄存器177的介绍得知从机地址默认为0x68,根据电路图上AD0引脚的值,确定从机地址的最后一位,因此当AD0为0时从机地址为0x68,当AD0为1时,从机地址为0x69。该寄存器的主要功能,使能缓冲区,设置是否使用SDA和SCL主导通讯,设置MPU6000是使用IIC协议还是使用SPI协议,MPU6050只能使用IIC协议。加速度计三轴的数值由于重力影响,即使是静止状态下,依然会有一个向Z轴方向的加速度力,所以加速度计的参数不会为0,0,0。

2025-11-08 20:38:03 1056

原创 细分嵌入式工程师工作岗位及薪资(Linux方向)

网络安全产品的Linux服务端/客户端研发;- 物联网/车联网()产品研发;- 服务端产品的虚拟化,容器化研发。- 熟悉计算机网络,熟悉;- 熟悉 Linux C/C++ 编程,熟悉多进程、多线程编程;- 熟悉,有 Nginx C 模块或者 Openresty Lua 模块开发经验;- 熟悉常见网络攻击和防护办法,熟悉主流Web安全风险和渗透技术;- 熟悉面向对象设计和常用设计模式,参与过大型项目的架构设计和开发;- 本科及以上学历,5年以上开发经验;

2025-11-07 20:59:10 876

原创 STM32_一文看懂!VSCode导入STM32项目及AI辅助开发

为例,手把手教你配置开发环境,AI辅助编码,实现一键编译、下载、调试,从此告别报错烦恼!用VSCode开发STM32单片机,不仅界面清爽,还能跨平台!MarsCode模型:Doubao/DeepSeek-R1/DeepSeek-V3。其他AI编程助手:Fitten Code、Baidu Comate(文心快码)通义灵码内置模型:Qwen/DeepSeek-R1/DeepSeek-V3。(VSCode扩展商店搜索安装):软件界面英文变中文版,操作秒懂。:单片机调试插件,支持ARM调试。:代码高亮与智能提示。

2025-11-04 18:44:08 739 2

原创 嵌入式面试技巧合集20251031

1、请你自我介绍一下你自己?回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。者。2、你觉得你个性上最大的优点是什么?回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。

2025-10-31 16:42:37 731

原创 stm32_关于乐鑫ESP8266-07S WIFI模组烧录安信可科技的MQTT固件流程

(WIFI_RXD--> 模块的TXD,WIFI_TXD-->模块的RXD,以及共地,如果模组的要接USB转TTL上的电源VCC, 则模组VCC-->模块VCC,而不是模块3v3,因为这样电压不足会烧录失败)(如果模组上,没有按键拉低引脚电平,则准备一把镊子)或者可以某宝买一个专门烧录ESP8266的测试板 夹具。以上两种方法:都有一个前提是:AT+CWMODE = 1 将wifi设置为station模式。、工作模式:develop、烧录模式:uart,点击OK。2)、通过手机的app来配置WIFI。

2025-10-28 20:49:48 952

原创 stm32_单片机面试技巧

11.面试经典试题。

2025-10-28 19:58:58 160

原创 stm32_基于 STM32U575 的飞行器姿态实时监控系统

2、STM32CubeMx中实现STM32U575 的飞行器姿态功能。

2025-10-28 10:49:04 270

原创 stm32_lvgl

然后点击保存的生成.c文件代码的。

2025-10-26 15:30:09 156

原创 Day08_刷题niuke20251024

2. swap_str函数中的参数也是按值传递的,函数内部交换的是指针变量a和b的值(地址),而不是指针所指向的字符串内容。初始化列表在对象创建的时候就完成初始化,而构造函数体内的赋值是在对象创建之后进行的,此时const变量已经被创建但未初始化,这是非法的。选项A"10 5 hello world world hello"是正确的,因为代码中的swap_int和swap_str函数都是值传递,不会改变主函数中原始变量的值。因为构造函数不属于类的成员方法,它是一种特殊的方法,专门用于对象的初始化。

2025-10-24 18:58:01 836

原创 Day07_刷题niuke20251023

第一次进入循环a = 1,b = 1均满足循环条件,但b%3 = = 1条件满足,故执行b = b + 3,得到b = 4,注意有continue,所以后面语句不执行,直接跳到 a + +这个语句,所以第一次循环完之后a = 2,b = 4;函数模板add返回值类型和参数类型都是T,当T被推导为int时,由于const修饰符不影响类型匹配(非const可以转为const),所以pfun1的类型(const int (*)(const int&, const int&))与模板实例化后的函数类型是兼容的。

2025-10-23 19:08:10 750

原创 Day06_刷题niuke20251022

C选项说"子类重新定义父类虚函数的方法叫做重载"是错误的,因为子类重新定义父类的虚函数的行为叫做"重写"(Override)或"覆盖",而不是"重载"(Overload)。因此D选项"都是虚函数"是正确的。A选项"正确"是错误的,因为它否定了函数调用在表达式中的合法性。A选项是正确的,因为在类的一般方法(实例方法)中,this关键字代表当前对象的引用,可以通过this来访问类的实例属性。D选项"C"是正确答案,因为代码中创建了C类的对象c,并调用了c.f()方法,会调用C类中定义的f()函数,输出"C"。

2025-10-22 20:15:48 991

原创 stm32_小乌龟使用手册

3、右键点击TortoiseGit(T)--->设置。

2025-10-22 15:53:51 355

原创 Day05_刷题niuke20251021

这里p是一个void类型的指针。malloc(100)分配的内存大小虽然是100字节,但sizeof(p)计算的是指针变量p本身的大小,而不是它所指向的内存空间的大小。而指针存储的是内存地址,在特定的系统中大小是固定的(如32位系统是4字节,64位系统是8字节),与所指向的数据类型无关。shared_ptr的引用计数是线程安全的,但是它所指向的对象的访问并不是线程安全的。D选项 x=*pa+3 是不正确的,因为这个表达式的含义是将pa指向的第一个元素(即a[0])的值加3,而不是访问数组的第3个元素。

2025-10-21 17:50:51 335

原创 02_stm32大项目阶段_(QT_html_微信小程序)

【代码】02_stm32大项目阶段_(QT_html_微信小程序)

2025-10-21 15:36:16 231

原创 Day04_刷题niuke20251020

这体现了两种语言良好的互操作性,在 .mm 文件中,C++ 类可以持有 Objective-C 对象的指针,同样 Objective-C 类也可以持有 C++ 对象的指针。A选项是正确的,因为在C++中,函数重载要求函数名相同的方法必须有不同的参数列表(参数类型或参数个数不同),而仅仅改变参数的名称(从a,b变成x,y)并不构成重载。C选项是正确的,因为在int* const c中,const修饰的是指针c本身,表示指针c的指向不能改变,但是可以通过指针修改其所指向的内存中的值。

2025-10-20 17:13:21 396

原创 Day03_刷题niuke20251018

单选题C++C语言1.int a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是( )Afor(i=1;i<11;i++)a[i]=i;Bfor(i=1;i<11;Cfor(i=1;i<11;Dfor(i=1;i<11;i++)a[0]=1;正确答案:B官方解析:这道题目考察了数组索引的基础知识。B选项是正确的,因为:1. 数组a有10个元素,下标范围是0到92. 要赋值1到10这些数,循环控制变量i的范围应该是1到10。

2025-10-18 17:41:29 577

原创 stm32_QT6怎么打包

【代码】stm32_QT6怎么打包。

2025-10-17 20:22:16 230

原创 Day02_刷题niuke20251017

需要注意的是,虽然queue不支持迭代器遍历,但我们仍然可以通过循环配合front()和pop()操作来访问队列中的所有元素,只是这个过程会改变队列的内容。A选项"int px*"的声明语法是错误的,因为在C语言中,声明指针变量时星号(*)应该紧跟在类型或变量名之间,不能单独放在最后。需要注意的是,虽然全局变量可以用于函数间传递数据,但在实际编程中应该谨慎使用,因为过多使用全局变量会降低程序的可维护性和可读性,容易导致程序出错。在C++的虚函数机制中,this指针类型是区分不同类中虚函数版本的关键因素。

2025-10-17 17:08:55 830

原创 Day01_刷题niuke20251016

正确答案:C. 都有可能关键原因:abs函数对最小负整数的处理存在溢出风险,可能导致返回值为负数。其他情况下返回非负数或0。建议:处理可能的最小负数时,建议使用long long类型或第三方库(如<stdint.h>中的int64_t)以避免溢出问题。知识点:C++、C语言题友讨论(36)多选题C语言28.一个由C语言编写的程序占用的内存分为哪几个部分A栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等,其操作方式类似于数据结构中的栈B。

2025-10-16 17:42:01 306

原创 stm32_阿里云服务器公网挂载mqtt云平台(面向纯小白,保姆级教程)

实例”

2025-10-16 15:35:56 618

原创 01_stm32大项目阶段_配置虚拟机中MQTT和Q5(配置MQTT)和Q6(配置MQTT)20251015

【代码】stm32大项目阶段20251015。

2025-10-15 15:14:52 427

原创 STM32MP1开发流程

翻转的最高速度取决你所配置的时钟。也取决你的应用程序如何去翻转它。问:STM32MP1 A7 Linux 启动需要多长时间?你可以根据你的应用实际情况决定是否使用它。根据场景需要不同的算法。STM32MP1 GPIO翻转的最高速度是多少?指南,以及开发过程中的各类软硬件以及工具的说明。启动可根据需要进行启动时间优化。启动时间可根据应用程序进行优化。答:可以接,详细可以参考我们的参考板。问:M4核如何启动,启动时间是多少?可根据应用程序的需要,选择从。但客户可以根据实际应用进一步优化。

2025-10-13 17:17:50 322

原创 stm32底层项目20251011

【代码】stm32底层项目20251011。

2025-10-11 20:40:56 374 1

原创 Day08_刷题niuke20251009

D选项是正确的,因为在C语言中当数组初始化时提供的初始值个数少于数组长度时,编译器会将这些初始值从数组的第一个元素(即a[0])开始依次赋值,未被赋值的元素将被自动初始化为0。因此A选项(1,4)是正确答案。C选项 a[1+1][0] 是正确的,因为它符合二维数组的标准访问语法,表达式 1+1 会被计算为 2,最终等价于 a[2][0],这是完全合法的数组访问方式。B选项正确:string类是C++标准库提供的字符串类,相比C风格的字符数组(char array),它提供了更安全和便捷的字符串操作。

2025-10-09 19:42:23 306

原创 Day18_常用linux指令

【代码】Day18_常用linux指令。

2025-10-08 21:52:33 139

原创 Day17_最小文件系统

简单来说,就像是系统在用户登录时为其准备的一个标准工作环境模板,确保每个用户一开始都拥有一个统一且功能完备的基础操作环境。对于系统管理员而言,它是进行全局环境配置的强大工具;对于普通用户,理解它有助于明白系统环境是如何构建的,以及如何个性化自己的配置。希望这些解释能帮助你全面理解文件。如果你对某个具体的配置场景有疑问,或者想了解更多关于其他配置文件(如~/.bashrc)的区别,我们可以继续深入探讨。

2025-10-08 21:51:00 783

原创 Day16_通信总线

传统的USB连接中,主机(如电脑)和从设备(如U盘)角色是固定的。USB OTG(USB On-The-Go)是USB技术的一项扩展功能,它让手机、平板等移动设备也能临时“变身”为USB主机,直接连接和管理其他USB设备。当检测到ID引脚浮空(如连接mini-B插头)时,它则作为B设备(外设)。OTG还包含会话请求协议(SRP),允许B设备请求A设备启动会话或结束会话以节省功耗,这对电池供电设备很重要。当OTG设备检测到ID引脚接地(如连接mini-A插头)时,它默认作为A设备(主机)。

2025-10-08 21:37:41 835

原创 Day15_BootLoader

通过串口线,使用 Kermit (loadb)、Xmodem (loadx) 或 Ymodem (loady) 协议从主机下载文件到开发板内存。当网络不可用时,这是一种备选的文件传输方式,但速度较慢。传递给 Linux 内核的启动参数,决定了根文件系统、控制台、网络配置等关键行为。通过 TFTP 协议从服务器下载文件到开发板的内存指定地址。可以指定内核、初始内存磁盘(initrd)和设备树(fdt)的地址。---> 保存环境变量,等价于saveenv。---> 设置环境变量,等价于setenv。

2025-10-08 21:34:08 654

原创 Day14_内核编译&安装

内核部署目录:(原地解压)内核源码目录:(原地解压)根文件系统:(指定目录Linux_for_Tegra/rootfs解压)jetson nano 4G版本补丁包:(原地解压)

2025-10-08 21:14:11 1100

原创 Day07_刷题niuke20251007

单选题C语言1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。AmainBMAINCnameDfunction正确答案:A官方解析:在C语言程序中,main函数是程序的入口点,也是必须存在的主函数。每个完整的C语言程序都必须且只能包含一个main函数,它是程序开始执行的地方。分析每个选项:A正确:main是C语言规定的主函数名称,必须使用小写。这是C语言的标准规范。B错误:MAIN使用了大写字母,C语言中main函数名必须是小写的。

2025-10-06 20:27:13 164

原创 Day05_刷题niuke20251006

单选题C语言1.在 C 语言程序中变量必须定义后再使用。A正确B错误正确答案:A官方解析:在C语言中,变量必须先定义后使用是一条基本原则。这主要基于以下几个原因:1. 内存管理角度:变量的定义会为其分配内存空间,如果不定义就使用,程序无法知道变量的存储位置和所需空间大小。2. 类型安全:变量定义时需要声明其数据类型,这样编译器才能进行类型检查,确保变量的使用符合其类型约束。

2025-10-05 16:27:12 896

原创 Day13_Jetson Nano

Linux内核驱动架构

2025-10-05 01:15:06 342

原创 Day04_刷题niuke20251005

单选题C++C语言1.break是结束本次循环,而continue是结束所有的循环。请问这句话的说法是正确的吗?A正确B错误正确答案:B官方解析:这句话的说法是错误的。需要对break和continue的概念进行明确区分:break和continue在循环控制中的作用是不同的:1. break的作用是:- 立即跳出当前所在的整个循环- 继续执行循环后面的代码- 适用于for、while、do-while循环以及switch语句。

2025-10-04 23:45:11 148

原创 Day03_刷题niuke20251004

单选题C++C语言1.下列数组定义语句中,不合法的是()ABCD正确答案:A官方解析:数组的定义语句中,A选项不合法的原因是初始化列表中的元素个数(4个)超过了数组的声明长度(3个)。在C++中,定义数组时如果指定了数组长度,那么初始化列表中的元素个数不能超过数组长度。分析其他选项:B选项合法:当数组定义时不指定长度,用初始化列表赋值时,数组的长度会自动设置为初始化列表中元素的个数,此处长度为3。

2025-10-03 23:41:07 629

原创 Day02_刷题niuke20251003

由于浮点数的精度问题,直接用==比较浮点数是不可靠的。正确的做法应该是判断两个浮点数的差的绝对值是否小于一个很小的数ε,比如:if(fabs(a - 0.0) < 1e-6)。C语言中的编译预处理是编译过程的第一个阶段,B选项正确,因为在C语言中,所有以#开头的命令行都是预处理命令,如#include、#define、#ifdef等,这些命令都会在编译之前被预处理器处理。需要注意的是,C选项 int *a[10] 中,[]的优先级高于*,所以它首先是一个数组,数组的元素类型是int*,即指向整型的指针。

2025-10-03 12:49:29 263

原创 Day12_面试

为什么使用UART总线通信时需要设置波特率,通信双方波特率不一致会出现什么情况?读取数据前,需要向从机发送读取时的起始地址,方便后续读取时从该地址开始读取数据。特点:开漏设计,双线均连接上拉电阻,空闲时保持高电平(利于传输的稳定性)接收数据时,先保证发出发送数据信号,告诉从机需要接收数据的起始地址,读取数据结束后,确保主机发送从机NACK信号,以便结束从机的数据发送。UART是异步通信,波特率用于替代时钟同步,同步两端的通信时序。起始位:低电平脉冲,宣告数据传输开始,是接收方同步的触发信号。

2025-10-03 00:33:48 353

stm32-基于 STM32U575 的飞行器姿态实时监控系统

stm32-基于 STM32U575 的飞行器姿态实时监控系统

2025-10-28

Day05-Linux项目怎么打包成exe

Day05-Linux项目怎么打包成exe

2025-06-24

Day05-Linux项目怎么打包成exe

Day05-Linux项目怎么打包成exe

2025-06-24

Day05-Linux项目怎么打包成exe

Day05-Linux项目怎么打包成exe

2025-06-24

刘静-学生管理系统项目

刘静-学生管理系统项目

2025-06-16

空空如也

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

TA关注的人

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