- 博客(981)
- 资源 (21)
- 收藏
- 关注
原创 STM32CubeMX的使用方法:使用STM32CubeMX生成基于STM32F103+HLA库的初始化代码,并在此基础上写出LED点灯程序
当然可以!是STMicroelectronics(意法半导体)提供的一款图形化配置工具,专门用于STM32 微控制器的初始化代码生成。它可以帮助开发者快速配置 STM32 的外设、时钟、引脚映射,并自动生成相应的 C 代码,以便导入到 Keil、IAR、STM32CubeIDE 等开发环境中进行进一步开发。主要功能。
2025-04-01 22:11:38
365
原创 Linux进程管理之进程间通信的相关知识(映射、管道(Pipe)通信、命名管道(FIFO)、消息队列、信号量、信号)
命名管道(FIFO)是一种特殊类型的文件,允许不相关的进程进行进程间通信(IPC)。下面是一个简单的示例,展示如何使用 FIFO 进行进程通信。Linux 的消息队列(Message Queue)是一种进程间通信(IPC)方式,它允许进程以消息的形式发送和接收数据。消息队列比管道(Pipe)和 FIFO 更灵活,支持不同类型的消息,并且可以非阻塞地读取数据。代码解析创建消息队列MSG_KEY是消息队列的唯一标识符。0666赋予读写权限。发送消息msg_type必须 > 0,用于区分不同类型的消息。
2025-03-30 11:01:39
634
原创 Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
fork()是 Linux 中用于创建新进程的系统调用。当一个进程调用fork()时,系统会创建一个与原进程几乎完全相同的子进程。新的子进程在有相关写操作时,会复制父进程的资源(即写时复制的概念)。父进程的PID和子进程的PID是不同的。父进程和子进程会从fork()调用的返回值处开始继续执行,但返回值在父进程和子进程中是不同的。
2025-03-29 20:07:13
756
原创 Linux进程管理之进程的概念、进程列表和详细的查看、进程各状态的含义
是程序执行的实例,在Linux中,每个进程都有一个唯一的PID(进程ID)。
2025-03-29 20:02:08
456
原创 Linux进程管理的相关知识点以及我的相关笔记链接
在Linux操作系统中,进程管理是操作系统内核非常重要的部分,涉及到进程的创建、调度、同步、通信等多个方面。
2025-03-29 18:09:24
999
原创 Keil编译生成的axf文件的介绍
主要用于 ARM 处理器的嵌入式开发。它的作用类似于 ELF(Executable and Linkable Format)格式,包含了可执行代码、调试信息、符号表等数据。,调试器(如 Keil µVision 或 J-Link GDB Server)可以使用它来进行。生成,包含了目标程序的机器代码,可以用于仿真和调试。,包含可执行代码、调试信息、符号表等数据。,但通常不会直接烧录到硬件,而是转换为。代码时,连接器会将多个目标文件(通常这个文件会出现在。文件)链接在一起,生成。是 Keil 生成的。
2025-03-29 16:19:52
199
原创 STM32_HAL开发环境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】
我们会在Keil(MDK-ARM)上去编写程序。的第02分03秒开始看。安装过程中请修改一下下面两个路径,避免占用C盘空间。Core就是Keil(MDK-ARM)的程序安装目录。Pack是各系列芯片的开发板的开发包的安装目录。还要填写下用户信息:然后开始安装:同意安装“KEIL-Tools By ARM 通用串行总线控制器”启动之后Keil会自动进行包描述的更新:我们最好耐心等待它检查完,右下角会有进度:大概会花费10到20分钟左右的时间。
2025-03-29 15:52:23
392
原创 通过万能SPI设备驱动spidev.c来操作挂接在SPI总线上的SPI设备(DAC模块)【spidev.c代码详解、SPI控制器及SPI设备的设备树语句解析】
关于设备驱动spidev.c的来历和介绍,在前面的博文中我已经介绍了,链接也可以参考视频(百度网盘搜索“1-5_05_spidev的使用(SPI用户态API)”),然后前面的1分30秒就对其来历进行了介绍。
2025-03-29 09:58:54
1030
原创 怎么样查看Linux的GPIO子系统中已经被占用的GPIO口的状态?
【搜索“gpiochip0对应于IMX6ULL的GPIO1”】关于上面截图中GPIO的编号意义,请参考我的另一篇博文。
2025-03-29 09:22:05
193
原创 怎么样查看正在运行的Linux系统的内核是什么时候编译的?
可见,时间已经更新了,并且编号也改为了2,说明这是第二次编译zImage得到的内核。可见,此时的内核的编译时间是 2024年12月11日的23点04分37秒。
2025-03-28 13:41:59
105
原创 Linux的SPI子系统详解(相关接口函数和基本原理讲解)
当SPI_master的驱动有了,并且接入到了Linux的SPI子系统后,所以后续我们就可以利用SPI子系统提供的一系列内核接口函数(API)去书写SPI设备(DAC模块)的驱动。实际上,之前在博文中使用的别人写的SPI设备通用驱动spidev.c也是用的SPI子系统提供的接口函数写成的。
2025-03-27 15:04:42
777
原创 C语言中把函数声明为inline是什么意思?
在 C 语言中,将函数声明为inline(内联)意味着编译器将该函数的代码直接插入到调用它的地方,而不是执行常规的函数调用。这种优化可以减少函数调用的开销,如栈帧分配和参数传递,从而提高程序运行效率,尤其是对小型、频繁调用的函数。inline。
2025-03-27 10:29:26
253
原创 SPI的数据传输引脚为什么命名为MOSI和MISO?
这种命名方式的核心在于,从主设备(Master)的角度出发定义数据方向,使得 SPI 总线在多设备通信时保持一致的理解。SPI(Serial Peripheral Interface,串行外设接口)的数据传输引脚命名为。
2025-03-27 10:19:21
354
原创 Linux的内核配置界面的使用示例累积
【搜索“触摸屏驱动移植适配”、“配置内核,使蓝牙驱动变成ko模块”、“某些项配置为M状态”】【搜索“配置并编译内核模块”】
2025-03-26 11:04:48
196
原创 Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
在 Linux 内核中,ACPI(Advanced Configuration and Power Interface,高级配置与电源管理接口)提供了一种标准化的方法来描述硬件,并支持设备自动发现和电源管理。在驱动总线(如 PCI、I2C、SPI、Platform 等)中,描述,ACPI 表(如 DSDT)中包含。在 Linux 设备驱动程序中,可以通过。,驱动仍能匹配 ACPI 设备,但。在 ACPI 系统中,每个设备由。不会显示匹配信息,可能会影响。进行 ACPI 设备匹配。结构,定义了该设备的。
2025-03-25 13:16:55
952
原创 SPI控制器(spi_master)、SPI设备、SPI总线(spi_device与spi_driver的匹配机制)、SPI万能驱动`spidev.c`
spidev.c各SPI设备通过SPI总线来使用SPI控制器的传输能力,关于这一点具体解释如下:由于SPI设备比I2C设备复杂,比如每个SPI设备有自己的片选控制引脚、有自己的最大时钟值、有自己的传输方式(任意时刻是只读或只写还是既读又写),所以SPI设备们直接使用SPI控制器的驱动是很困难的。要想使用一个SPI设备,通常都不是直接去使用SPI控制器的驱动来操作SPI设备,而是通过SPI总线来为具体的SPI设备提供驱动。
2025-03-24 11:14:25
1017
原创 芯片手册中的LSB和MSB是什么意思?
在芯片手册(Datasheet)中,**LSB(Least Significant Bit)Bit 01011_00100Bit N-1Bit 71011_00101。
2025-03-23 12:07:56
340
原创 利用I2C_bus(I2C总线)为挂接在I2C总线上的设备AP3216C编写驱动程序
关于I2C总线的原理和结构的介绍,请参看我的另一篇博文在阅读以下内容前,也建议先看一看上面这篇博文。i2c_driver。
2025-03-22 14:56:53
975
原创 Linux的I2C总线的原理和结构详解
结构体,与Platform总线不同的是,在Platform总线中,总线是一个虚拟的总线概念,而在Linux的I2C总线结构中,总线是实实在在的,I2C本来就是一个物理总线嘛,它上面可以外挂很多I2C设备。关于Linux的I2C总线的结构原理的详细介绍,请百度网盘搜索“1-8_4-8_I2C系统驱动程序模型”,然后从05分45秒开始看。这里就不再赘述了,因为只要吃透了Platform总线,那么理解Linux的I2C总线是很简单的。在Linux的I2C总线中,其实重点也是类似的三点,即I2C的match机制、
2025-03-20 20:43:02
191
原创 IMX6ULL的I2C控制器在Linux的设备树文件中的描述
NXP官方提供的BSP中的内核中,已经写好了I2C控制器的驱动,并且该驱动接入了Linux的I2C子系统,所以我们就不需要去写I2C控制器的驱动,但还是应该去看看其相关的设备树描述语句。我们不妨再在顶层文件“100ask_imx6ull-14x14.dts”中去搜索下“pinctrl_i2c1:”,得到引脚复用信息。【搜索“找到设备树文件中的相关内容”】得到启发,为了知道去搜索哪个设备节点名或标签名,我们应该先去查看文件。至此IMX6ULL的I2C控制器在Linux的设备树文件中的描述就基本搞清楚了。
2025-03-20 12:24:11
174
原创 利用Linux的I2C子系统和i2c-tools工具集写出的对I2C设备AP3216C读写的应用程序
由于NXP官方提供的BSP里已经包含了其片上I2C控制器的驱动并接入到了Linux的I2C子系统,所以我们可以直接去写与I2C有关的应用程序了。在本篇博文中我们用两种方式对I2C设备AP3216C进行读写操作。第一种:直接利用Linux的I2C子系统对I2C设备AP3216C进行读写操作。
2025-03-20 12:07:55
769
原创 Linux中的软链接指向同目录中的A文件时,如果这个目录被整体复制到另外的地方,那么复制得到的软链接也指向复制得到的A文件(另附查看一个软链接指向的方法-单独复制一个软链接会怎么样)
Linux中的软链接指向同目录中的A文件时,如果这个目录被整体复制到另外的地方,那么复制得到的软链接也指向复制得到的A文件。
2025-03-19 14:08:10
273
原创 Linux的so文件并不是静态库文件,而是共享库文件(Shared Object),对应于Windows中的动态链接库dll文件,a文件才是静态库文件,并附详细介绍
是动态链接库(Dynamic Link Library,简称 DLL)在 Linux 环境下的对应格式。它类似于 Windows 中的。文件,是一种能够被多个程序共享和调用的二进制文件。输出会列出该程序所依赖的所有共享库及其路径。:用于查看程序所依赖的共享库。文件中的符号(函数和变量)。在 Linux 中,
2025-03-19 13:07:54
950
原创 Linux中如果一个可执行程序位于系统的环境变量目录中(比如/bin、/usr/sbin/、/sbin),想找到它的位置可以用which命令来找到
Linux中如果一个可执行程序位于系统的环境变量目录中(比如/bin、/usr/sbin/、/sbin),想找到它的位置可以用which命令来找到。,但是我不知道它在哪里,我就可以用下面的命令。比如我现在可以直接运行程序。
2025-03-19 11:30:10
149
原创 Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
i2c-tools是的用户空间工具集(你也可以把它看成是一个库,类似于之前自己用过的触摸屏库tslib库、FreeType矢量字符库),它提供了一系列命令行工具,可以扫描、读取、写入 I²C 设备,非常适合嵌入式开发和调试 I²C 设备,如等。i2c-toolsi2c-toolsi2cdetecti2cdumpi2cgeti2cseti2c-tools扫描 I²C 总线上的设备,显示哪些地址上有响应的 I²C 设备。77--读取 I²C 设备的全部寄存器内容,适用于调试寄存器数据。读取的值。0xAB。
2025-03-18 20:36:28
907
原创 能进行光照强度测量和距离检测、通信接口为I2C的AP3216C芯片的介绍,并附上它的Datasheet
是一款集成了和的光学传感器芯片,广泛用于智能手机、平板电脑、笔记本电脑等设备,以提供自动亮度调节和接近检测功能。通常,AP3216C 通过总线与 MCU 进行通信。
2025-03-17 21:59:30
307
原创 修改IMX6ULL_PRO开发板的设备树文件使开发板启用UART5(串口5)
通过下面两篇博文我们知道了,我们完全可以通过Linux的TTY子系统去使用嵌入式处理器芯片中的串口资源,通常芯片官方提供的BSP中就已经把部分串口注册进入了Linux的TTY子系统了。我们写串口驱动的目的是使用串口,如果已经能方便的使用串口了,我们再去写串口驱动其实际意义不大。目前的问题是似乎NXP官方提供的BSP中只把部分串口接入了Linux的TTY子系统了。可见,只启用了1号、3号、6号串口,这篇博文中我们尝试着去修改设备树文件,看能不能把另外的串口启用。
2025-03-17 11:52:05
969
原创 关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】
现在要在点击单元格进而访问Level1.txt、Level2.txt、Level3.txt这些文件。
2025-03-12 19:52:17
356
原创 Linux的TTY子系统(TTY框架)的重要结构体termios的详解(串口通信参数的配置)
通常,我们开发串口驱动和应用时,就是以Linux的TTY子系统(TTY框架)为基础进行的,而TTY子系统(TTY框架)的结构体termios就与串口通信参数的配置紧密相关,所以这篇博文就对结构体termios进行详解。的本地输入处理方式。它的主要作用是影响终端如何处理。(本地模式标志)字段用于控制 Linux。,如波特率、数据位、校验位、控制模式等。用于配置串口终端设备的结构体,位于。用于配置串口/终端设备的核心结构体。控制数据从串口发送时的处理方式。控制串口接收数据时的处理方式。设置串口的收发速率。
2025-03-12 11:09:23
916
原创 Linux的TTY子系统(TTY框架)的重要结构体termios的`c_iflag`字段的BRKINT选项和IGNBRK选项的含义【详解串口的BREAK信号】
IGNBRK。
2025-03-12 10:53:41
644
github配置个人主页所需的文件
2023-07-26
提供轮廓拓扑结信息(hierarchy)且contourIdx的值为-1时函数drawContours()是按怎样的规律绘制轮廓
2022-07-04
基于OpenCV实现的图像油画效果处理程序(高效率低耗时C++代码-带详细注释)
2022-06-20
tensorflow-2.9.1-cp39-cp39-win_amd64.whl
2022-06-14
scipy-1.8.1-cp39-cp39-win_amd64.whl
2022-06-14
scikit_learn-0.24.2-cp36-cp36m-win_amd64
2022-06-13
scipy-1.5.4-cp36-cp36m-win_amd64.whl
2022-06-13
编译好的OpenCV 4.5.0+VS2019+CUDA模块+python 3.8
2022-06-05
自己编译的适用于win32平台(x86)、VS2013的OpenCV3.0.0+opencv_contrib-3.0.0库
2022-06-04
ippicv_windows_20141027.zip
2022-06-02
利用OpenCV的类BackgroundSubtractorKNN实现对道路监控视频前景/背景提取的代码
2022-05-27
将图像(矩阵)从直角坐标系转换到极坐标系的MATLAB代码
2022-05-18
Discuz主题-帖子浏览记录插件
2022-05-15
Arpack-arpack编译好的32位(x86)库文件(lib和dll)
2022-05-13
ARPACK-arpack-的所有头文件,比如arlsmat.h、arlspen.h、arlssym.h等
2022-05-11
LSM直线检测算法的源代码
2022-05-10
CannyLines直线检测算法编译好的lib库、源代码和测试图片集
2022-05-10
ippicv_2019_win_ia32_20180723_general.zip等OpenCV-Cmake时容易缺失的5个文件
2022-05-09
对旋转文本图像矫正时填入函数getRotationMatrix2D()的角度应该是哪个?
2022-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人