- 博客(65)
- 资源 (1)
- 收藏
- 关注
原创 【STM32开发】-基础开发笔记(STM32F103,HAL库开发)
本文介绍了STM32开发的基础知识和关键操作流程。主要内容包括:1.开发环境搭建:MDK5软件组成、STM32CubeF1工具特点及工程文件创建方法;2.核心概念:启动文件作用、__weak修饰符特性、C语言位操作和宏定义技巧;3.外设配置:端口复用步骤、中断优先级设置原理;4.常用功能实现:串口通信配置流程、两种看门狗使用方式、定时器中断开发步骤。文章详细说明了HAL库与标准库的区别,并提供了各功能模块的典型配置代码框架,为STM32开发者提供了实用的技术参考。
2025-07-29 14:57:02
684
原创 【嵌入式面试高频知识点】-全面总结直接背(适合基础较差的同学)
总结面试常见问题,很多问题都是本人亲身经历的面试然后总结的,背然后总结,希望对你面试有帮助!
2025-06-23 23:42:45
676
原创 【STM32开发】-RT-Thread开发(初级)
RT-Thread是一个嵌入式实时操作系统,包含内核层、组件层和软件包层。相比FreeRTOS,它提供更丰富的中间件支持。系统有两个版本:精简的Nano版和全功能的IoT版。在开发模式上,RT-Thread采用实时调度机制,支持256级线程优先级。线程作为任务载体,通过控制块管理状态信息,包含初始化、就绪、运行等五种状态。该系统适合需要实时响应的嵌入式应用场景。
2025-05-26 19:26:00
225
原创 【STM32开发】-单片机开发基础(以STM32F407为例)
单片机是一种将计算机系统集成到单一芯片上的微控制器,广泛应用于嵌入式系统。以STM32F407为例,它基于ARMCortex-M4内核,具有高性能、高性价比、丰富的外设接口(如I2C、SPI、CAN等)和强大的市场支持。常用操作包括GPIO控制、中断处理、定时器使用、USART串口通信、I2C和SPI总线通信。
2025-05-11 22:20:57
1313
原创 【STM32开发】-FreeRTOS开发入手学习
pxTaskDefinition:指向一个结构体 TaskParameters_t,这个结构体描述了任务的任务函数、usStackDepth:任务堆栈大小,注意实际申请到的堆栈是 usStackDepth 的 4 倍。puxStackBuffer: 任务堆栈,一般为数组,数组类型要为 StackType_t 类型。pxCreatedTask: 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是。usStackDepth:任务堆栈大小,由于本函数是静态方法创建任务,所以任务堆栈由用户给出,
2024-11-09 21:35:27
1525
原创 【STM32开发】-RS485相关
RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。1、RS485电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示,逻辑“0”以两线间的电压差为-(2~6)V 表示。10 米时,RS485 的数据最高传输速率可达 35Mbps,在 1200m 时,传输速度可达 100Kbps。RS485属于物理层,为2线,半双工、多点通信的标准。
2024-11-04 14:55:48
354
原创 【linux开发-LCD】-在LCD上显示字符
通过一些字符取模软件获取到字符的子模:就是一个二维数组,用于表示字符点阵中,哪些小方块应该要填充颜色、哪些小方块不填充颜色。例如一个宽64个小方块,高86个小方块的字符点阵,数组存储的其实是字符的位图数据,字符点阵中的每一个小方块对应一个bit位;填充颜色的方块使用 1 表示、不填充颜色的方块使用 0 来表示,所以一个小方块刚好可以使用一个 bit 位来描述。
2024-11-01 16:23:02
911
原创 【嵌入式面试高频知识点】-MQTT协议
MQTT(Message Queuing Telemetry Transport),消息队列遥测传输MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议,MQTT 协议是应用层协议,工作在TCP/IP四层模型中的最上层(应用层),构建于 TCP/IP协议上。
2024-10-31 16:32:55
725
原创 【linux开发-应用】V4L2开发相关
V4L2(Video for linux two),是 Linux 内核中视频类设备的一套驱动框架,为视频类设备驱动开发和应用层提供了一套统一的接口规范。
2024-10-31 14:58:20
254
原创 【linux开发-驱动】-RS232/485相关
根据电平的不同,串口分为TTL和RS232。不管什么样的接口电平,其驱动程序都是一样的,通过外接RS485这样的芯片就可以将串口转换为RS485信号。
2024-10-29 14:01:46
568
原创 【linux开发-Qt】-Qt多线程开发
QThread 线程类是实现多线程的核心类。Qt 有两种多线程的方法,其中一种是继承 QThread的 run()函数,另外一种是把一个继承于 QObject 的类转移到一个 Thread 里。
2024-10-21 15:06:45
642
原创 【linux开发-驱动】-I2C驱动相关
I2C 是一种很常见的同步、串行、低速、近距离通信接口,用于连接各种 IC、传感器等器件,它们都会提供 I2C 接口与 SoC 主控相连,比如陀螺仪、加速度计、触摸屏等,其最大优势在于可以在总线上扩展多个外围设备的支持。
2024-10-16 17:02:57
608
原创 【linux开发-驱动】-根文件系统相关(使用buildroot构建根文件系统)
buildroot 比 busybox 更上一层楼,buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,需要什么就选择什么,就跟我们去吃自助餐一样,想吃什么就拿什么。buildroot 极大的方便了我们嵌入式 Linux 开发人员构建实用的根文件系统。
2024-10-15 17:16:20
887
原创 【linux开发-驱动】-根文件系统相关(使用 busybox 来构建根文件系统)
Linux 系统移植的最后一步,根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。
2024-10-15 15:01:44
964
原创 【linux开发-驱动】-U-Boot相关
Linux 系统要启动需要通过 bootloader 程序引导,也就说芯片上电以后先运行一段 bootloader 程序。在实际开发中,我们一般不会直接用 uboot 官方的 U-Boot 源码的,一般使用开发板半导体厂商提供的更全面。
2024-10-12 17:03:32
1353
原创 【linux开发-驱动】-STM32MP157启动相关
STM32单片机是直接将程序下载到内部的Flash,上电以后直接运行内部Flash中的程序。STM32MP157 内部没用供用户使用的 Flash,系统都是存放在外部 Flash 里面的,比如 EMMC,因此 STM32MP157 上电以后需要从外部 Flash 加载程序到内存中。
2024-10-12 14:48:55
1032
原创 【linux开发-驱动】-设备树
描述设备树的文件叫做DTS(Device Tree Source),采用树形结构描述板级设备,也就是开发板上的设备信息,比如IIC接口上接了那些设备,内存基地址等树的主干就是系统总线,枝干就是对应的控制器,比如IIC控制器,GPIO控制器等都是主线上的分支。
2024-10-10 17:28:25
880
原创 【linux开发-Qt】-信号与槽机制
信号(signal),就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号。槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的 C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
2024-10-10 11:09:06
857
原创 【问题记录】-无法获得锁
ubuntu输入命令:sudo apt install libxcb-xinerama0。或者使用apt install时出现错误
2024-09-25 10:58:58
548
原创 【C++学习】6、继承
继承描述的是类与类之间的关系,A类继承B类,A类就拥有B类的数据和方法。继承的方式:公有继承(public)保护继承(protected)私有继承(private)子类无法继承父类的函数:构造函数、析构函数、重载=运算符调用成员或父类的有参构造,必须使用初始化列表处理方法:加作用域是最安全、最方便的处理方式 子类重新定义了父类的同名函数,将屏蔽父类的所有同名函数。 如果子类非要用父类的同名函数,需要加作用域
2024-08-01 15:35:44
335
原创 【C++学习】5、类的补充
1、普通成员函数内部自带一个隐式的this指针变量2、this保存的是调用该成员函数的对象的地址关键字:friend不通过类的成员函数直接访问类的私有数据,破坏了类的封装性特殊的运算符重载,会用到友元运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。关键字:operator。
2024-08-01 14:59:22
582
2
原创 【C++学习】4、类
构造函数:编译器自动调用,如果用户不提供构造函数,编译器会提供一个空的无参构造函数。类实例化对象时,先为对象开辟空间,在自动调用构造函数完成初始化。析构函数完成对象的清理工作,先清理,在释放对象空间。析构函数也是编译器自动调用注意:1、析构函数不能释放对象的空间,只能释放对象中指针成员指向的堆区空间。2、如果类中有指针成员,用户必须实现析构函数3、如果用户不提供析构函数,编译器会自动提供一个空的析构函数本质是构造函数。
2024-07-31 17:29:15
546
原创 【C++学习】3、函数的默认参数以及重载
C++在声明函数原型的时候,可以为一个或者多个参数指定默认的参数值,当函数调用的时候如果没有给定实参,编译器会自动用默认值代替。注意:如果某个参数设置成默认参数,那么这个参数右边的所有参数都必须设置默认参数。
2024-07-31 16:01:32
235
原创 【C++学习】2、引用和内联函数
用关键字inline修饰的函数//内联函数的定义:inline必须在定义函数的时候修饰return x+y;//函数声明时 使用inline无效//无效的内联函数和宏函数的区别:1、内联函数的本质是函数,宏函数的本质不是函数2、宏函数在预处理阶段展开,内联函数在编译阶段展开3、宏函数不能保证参数的完整性,内联函数能保证参数的完整性4、宏函数没有作用域的限制,不能作为类的成员,内联函数有作用域,可以作为类的成员内联函数的特点:1、inline修饰的内联函数只是用户的建议,具体还得看编译器。
2024-07-31 14:36:35
205
原创 【C++学习】1、C++对C的扩展
区别:C++:面向对象编程、泛型编程,将同一属性的数据和方法封装在一起,形成对象,项目就是众多对象的集合。C:面向过程,先分析项目的实现步骤,用函数逐一实现项目的步骤,然后逐一调用函数来完成项目。三大特性:封装:将同一属性的数据和方法封装在一起,加以权限区分,用户只能通过公共方法操作私有数据。继承:体现的是类和类之间的关系,继承可以继承一个类的所有数据和方法。多态:一个接口多种方法。二、C++的扩展。
2024-07-31 14:12:07
400
原创 【学习笔记】-Linux系统连接阿里云,并上传温湿度
4、将解压后的文件复制到Linux系统中,先在终端在LinkSDK目录下,输入make,打开demos/mqtt_basic_demo.c,修改相应信息。生成后就会得到一个压缩包,然后解压,得到LinkSDK文件。6、然后在make编译一下,完成后,运行。更具自己的要求配置,配置好后点击生成。
2023-10-22 23:04:55
389
原创 【项目笔记】-esp8266固件烧录
一、具体步骤打开NodeMCU custom builds:点击这里在最后选择开始构建:显示构建成功,打开邮箱查看:等会后会收到邮箱,将链接复制到浏览器,就可以下载了:下载:
2023-10-14 15:11:12
204
原创 【DHT11驱动】-STM32CubeMX+DHT11温湿度传感器
采用单总线双向串行通信协议,每次采集都要由单片机发起开始信号,然后DHT11会向单片机发送响应并开始传输40位数据帧,高位在前。
2023-10-11 11:06:10
2946
8
原创 【网络编程】-什么是Libnet
Libnet是一个用于网络信息操作的开源C库,它提供了一组API,可用于创建和处理网络协议数据包。Libnet可以在不同的操作系统上运行,如Linux、FreeBSD、OpenBSD、Mac OS X和Windows等。它可以帮助开发人员快速构建定制的网络应用程序,包括网络安全工具、入侵检测系统和漏洞扫描器等。Libnet的主要特点包括:1. 提供多种网络协议支持,如TCP、UDP、ICMP、IP等。2. 可以创建多种协议数据包,包括ARP、RIP、OSPF等。
2023-09-13 19:42:57
522
原创 【网络编程】-TCP编程(重要)
TCP代表传输控制协议。它是一种网络协议,用于在计算机之间建立可靠的连接并传输数据。它确保数据在发送和接收之间的可靠性、完整性和顺序,并使用数据包确认和重传来处理丢失的数据包。
2023-09-07 19:55:12
114
原创 【网络编程】-什么是TFTP、广播和多播
广播是由一台主机向该主机所在子网内的所有主机发送数据的方式。多播:数据的收发只在同一分组中进行。//定义IP多播的结构体//将要加入的多播地址//需要加入多播地址的IP。
2023-09-06 20:27:43
154
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人