昊虹AI笔记

用心记录工作和生活中遇到的技术问题

  • 博客(981)
  • 资源 (21)
  • 收藏
  • 关注

原创 嵌入式开发学习笔记总目录

【代码】嵌入式开发学习笔记总目录。

2025-01-15 11:47:30 1122

原创 STM32CubeMX的使用方法:使用STM32CubeMX生成基于STM32F103+HLA库的初始化代码,并在此基础上写出LED点灯程序

当然可以!是STMicroelectronics(意法半导体)提供的一款图形化配置工具,专门用于STM32 微控制器的初始化代码生成。它可以帮助开发者快速配置 STM32 的外设、时钟、引脚映射,并自动生成相应的 C 代码,以便导入到 Keil、IAR、STM32CubeIDE 等开发环境中进行进一步开发。主要功能。

2025-04-01 22:11:38 365

原创 STM32F103C8T6开发板各硬件资源说明示意图(实物图)

主控芯片型号:STM32F103C8T6。

2025-04-01 18:06:09 24

原创 STM32_HAL之程序编写、编译、烧写、上板测试初体验

请参考博文。

2025-04-01 13:26:58 204

原创 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的进程优先级调度学习笔记

范围 -20 到 19,数值越大优先级越低。

2025-03-29 20:08:27 346

原创 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

原创 利用Linux的SPI子系统和SPI总线写出SPI设备(DAC模块)的驱动

ti,tlc5615。

2025-03-29 10:12:16 807

原创 通过万能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系统如何搜索内核日志?用“dmesg”命令...

比如我要在内核日志中搜索关键词。

2025-03-29 09:26:28 70

原创 怎么样查看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上的`i2c-tools`工具集的编译构建和安装

的i2c-tools。

2025-03-19 22:07:15 702

原创 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

原创 SMBus协议介绍(它是I2C协议的子集)

百度网盘搜索“1-3_4-3_SMBus协议”。pwd=32wc。

2025-03-18 11:22:17 443

原创 能进行光照强度测量和距离检测、通信接口为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

原创 IMX6ULL_Pro开发板的串口应用程序实例(利用TTY子系统去使用串口)

关于结构体termios的详细介绍,请参看我的另一篇博文。

2025-03-16 11:18:13 851

原创 WPS的Excel文档如何利用VB脚本批量替换超链接的内容

关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】

2025-03-13 11:50:40 1319

原创 关于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

ckplayer宽度和高度根据父容器的宽度进行自适应的代码段

ckplayer宽度和高度根据父容器的宽度进行自适应的代码段。 代码里有详细注释,大家一看便知是怎么回事儿。

2024-01-01

github配置个人主页所需的文件

github配置个人主页所需的文件,详细的介绍请参考博文:https://blog.youkuaiyun.com/wenhao_ir/article/details/131253801

2023-07-26

提供轮廓拓扑结信息(hierarchy)且contourIdx的值为-1时函数drawContours()是按怎样的规律绘制轮廓

提供轮廓拓扑结信息(hierarchy)且contourIdx的值为-1时函数drawContours()是按怎样的规律绘制轮廓的。 本文档是博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125537878的付费内容。 文件付费下载之后请大家用浏览器打开。

2022-07-04

基于OpenCV实现的图像油画效果处理程序(高效率低耗时C++代码-带详细注释)

这个代码的详细介绍见博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125363431, 该代码针对大多数图像油画效果实现程序耗时过多的问题进行了优化,在我的计算机上实测300×300的图像只需要0.66秒即可处理完,而优快云上其它实现同样油画效果的代码一般耗时都在10秒以上。 购买之后在阅读注释过程中有任何疑问都可以在优快云上发私信咨询我,我工作时都挂着优快云的,会很快回复您的。

2022-06-20

tensorflow-2.9.1-cp39-cp39-win_amd64.whl

tensorflow-2.9.1-cp39-cp39-win_amd64.whl 使用pip在线安装下载很慢,并且下载到中途还有可能失败,所以给大家提供一个优快云下载地址。下载下来之后的本地安装方法见博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125260565

2022-06-14

scipy-1.8.1-cp39-cp39-win_amd64.whl

scipy-1.8.1-cp39-cp39-win_amd64.whl,pip安装scipy-1.8.1时,此文件下载比较慢,所以提供给大家,下载之后本地安装方法见博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/125260565

2022-06-14

scikit_learn-0.24.2-cp36-cp36m-win_amd64

把文件scikit_learn-0.24.2-cp36-cp36m-win_amd64.whl下载到本地后的安装方法见博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125260565

2022-06-13

scipy-1.5.4-cp36-cp36m-win_amd64.whl

把文件scipy-1.5.4-cp36-cp36m-win_amd64.whl下载到本地后的安装方法见博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125260565

2022-06-13

编译好的OpenCV 4.5.0+VS2019+CUDA模块+python 3.8

OpenCV 4.5.0 x64, VS2019 with CUDA all modules + python 3.8 bindings (Debug) configured with: CUDA 11.1 binaries compatible with compute 3.5-8.6, –-use_fast_math enabled, cv::cuda). cuDNN 8.0.4 (DNN_BACKEND_CUDA). Nvidia’s NVDECODE hardware video decoder (cv::cudacodec::VideoReader). Intel Quick Sync hardware video encoder/decoder (cv::CAP_INTEL_MFX).

2022-06-05

自己编译的适用于win32平台(x86)、VS2013的OpenCV3.0.0+opencv_contrib-3.0.0库

自己编译的适用于win32平台(x86)、VS2013的OpenCV3.0.0+opencv_contrib-3.0.0库 详细介绍见博文:https://blog.youkuaiyun.com/wenhao_ir/article/details/125098843 内附OpenCV3.0.0的源码和opencv_contrib-3.0.0的下载链接。

2022-06-04

ippicv_windows_20141027.zip

CMake编译OpenCV-3.0.0源码时需要这个文件,详情见博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/125098843 其hash值为 b59f865d1ba16e8c84124e19d78eec57

2022-06-02

利用OpenCV的类BackgroundSubtractorKNN实现对道路监控视频前景/背景提取的代码

代码的详细效果见博文https://blog.youkuaiyun.com/wenhao_ir/article/details/125007017 利用OpenCV的类BackgroundSubtractorKNN实现对道路监控视频前景/背景提取的代码 代码中有测试视频的下载链接。 去除车辆阴影的效果不错。

2022-05-27

将图像(矩阵)从直角坐标系转换到极坐标系的MATLAB代码

实现将单通道的图像或矩阵从直角坐标系转化为极坐标的,语言为MATLAB,代码中有详细的注释说明。 详情请参见下面这篇博文: https://blog.youkuaiyun.com/wenhao_ir/article/details/124831090

2022-05-18

Discuz主题-帖子浏览记录插件

这个插件的详细介绍链接 https://blog.youkuaiyun.com/wenhao_ir/article/details/124767719 这个插件可用于记录并查看每个帖子都有哪些用户进行了浏览,我当时用来找出那些被共享的VIP帐号和盗取自己网站上资源的VIP。 注意:这个插件适用于Discuz的X2.5以上的GBK版本。

2022-05-15

Arpack-arpack编译好的32位(x86)库文件(lib和dll)

Arpack-arpack编译好的32位(x86)库文件(lib和dll),需要的朋友可直接下载使用,免得自己再去下载MINGW然后麻烦地编译了。

2022-05-13

基于H-minima(迭代H-极小值)的标记控制分水岭细胞核分割的MATLAB实现

基于H-minima(迭代H-极小值)的标记控制分水岭细胞核分割的MATLAB实现

2022-05-13

ARPACK-arpack-的所有头文件,比如arlsmat.h、arlspen.h、arlssym.h等

ARPACK-arpack-的所有头文件,比如arlsmat.h、arlspen.h、arlssym.h等

2022-05-11

LSM直线检测算法的源代码

LSM直线检测算法的源代码,了解更多详情可参见博文:https://blog.youkuaiyun.com/wenhao_ir/article/details/124636972

2022-05-10

CannyLines直线检测算法编译好的lib库、源代码和测试图片集

CannyLines直线检测算法编译好的lib库、源代码和测试图片集,了解更多详情可参见博文:https://blog.youkuaiyun.com/wenhao_ir/article/details/124636972

2022-05-10

ippicv_2019_win_ia32_20180723_general.zip等OpenCV-Cmake时容易缺失的5个文件

关于我上传的这个资源的详情,可见博文: https://blog.youkuaiyun.com/wenhao_ir/article/details/124664637 OpenCV4.x进行Cmake时报错"Error in configuration process,project files may be invalid"需要的五个文件。 具体文件名如下: b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip 55c0bc8ad27db00116fabf06508de196-opencv_videoio_ffmpeg_64.dll 5de6044cad9398549e57bc46fc13908d-opencv_videoio_ffmpeg.dll 0157251a2eb9cd63a3ebc7eed0f3e59e-ippicv_2019_win_ia32_20180723_general.zip 1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip

2022-05-09

对旋转文本图像矫正时填入函数getRotationMatrix2D()的角度应该是哪个?

对旋转文本图像矫正时填入函数getRotationMatrix2D()的角度应该是哪个? 这个问题来源于博文: https://blog.youkuaiyun.com/wenhao_ir/article/details/51733627 中对下面代码的说明。 angel = angel<pi2 ? angel : angel - CV_PI; 这句代码实际上是确定函数getRotationMatrix2D()的第二个参数,函数getRotationMatrix2D()的第二个参数为图像旋转的角度,单位为度,正值代表逆时针旋转。代码的意思为,当我们得到的angle小于π/2时,旋转的角度就为angel。而如果它大于π/2时(等于π/2的情况已经被之前的代码排除了),旋转的角度为angel -π/2。为什么是这样? 这个文档详细介绍了这个问题,由于是自己花时间和精力写的,所以麻烦大家花费1.9元钱购买可见(本来想设置成1元钱的,但是优快云最低是1.9元),谢谢大家。

2022-05-06

OpenCV-4.1.2.zip

OpenCV-4.1.2的源码,在OpenCV官网点击Sources后的页面无法连接,于是用国外的服务器下载下来的。

2022-02-17

空空如也

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

TA关注的人

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