自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TinyXML2的一些用法

功能:获取当前元素的下一个同级元素。功能:获取元素的第一个子元素。返回值:指向文本内容的字符串指针,如果没有文本内容返回 nullptr。返回值:指向下一个同级元素的指针,如果没有找到返回 nullptr。返回值:指向属性值的字符串指针,如果属性不存在返回 nullptr。返回值:指向第一个子元素的指针,如果没有找到返回 nullptr。返回值:指向根元素的指针,如果没有根元素返回 nullptr。参数:name 是可选参数,表示同级元素的名称。参数:name 是可选参数,表示子元素的名称。

2024-12-02 22:44:31 1387

原创 文件比较和文件流

seekg() 函数用于设置输入流的读取位置,属于 istream 类。peek() 函数用于查看输入流中的下一个字符,但不从流中提取它。diff 的输出结果以 行号 和 更改说明 表示。

2024-12-01 22:38:37 1467

原创 System、环境变量和set指令

【代码】System、环境变量和set指令。

2024-12-01 15:59:34 744

原创 RS232和RS485

前情提要:UART的缺点。

2024-10-20 01:27:15 1482 1

原创 UART协议

异步通信:UART不需要时钟信号来同步发送和接收设备,而是通过预定的波特率来控制数据传输速度。全双工通信:UART支持同时发送和接收数据。UART通信通常主要依赖三根线。

2024-10-19 17:32:40 1152

原创 I2C和SPI协议

I²C 和 SPI 都是常用的串行通信协议。I²C 通过两条线(SDA 和 SCL)进行双向通信,支持多主多从架构,具有总线仲裁机制,常用于短距离设备间的数据传输。SPI 使用多条线(MOSI、MISO、SCK、CS),支持全双工高速通信,适合需要快速通信的场景,如存储器和显示器。

2024-10-19 00:19:50 1125

原创 Linux下CMake入门

CMake 的一个优势在于它能够支持多平台和多编译器。你可以通过 CMake 生成 Visual Studio、Xcode 工程文件,或者为其他平台生成 Makefile。CMake 的基本流程。

2024-10-13 23:42:26 644

原创 Linux下GCC入门

交叉编译指在一个平台上编译生成可以在另一个平台上运行的程序。GCC 可以进行交叉编译,尤其在嵌入式开发中非常常用。在编译大型项目时,可以使用 -j 选项来加速编译过程。该选项指定并行编译时使用的线程数。

2024-10-13 20:57:51 1085

原创 Linux的GDB学习与入门

GDB入门

2024-10-13 20:22:16 910

原创 驱动知识点归纳一

内核模块是指可以动态加载到操作系统内核中的代码块,通常是为了扩展内核的功能而使用的。它们是Linux内核的重要组成部分,允许用户在不需要重新编译整个内核的情况下,向内核添加功能,或者卸载不再需要的功能。用途:设备驱动程序,文件系统支持,网络协议栈设备注册 → 设备添加到设备列表中。驱动注册 → 驱动程序添加到驱动列表中。设备与驱动匹配 → 匹配成功后,调用 probe 函数进行设备初始化。设备驱动加载完成 → 设备驱动开始与硬件设备交互。

2024-10-12 14:56:53 672

原创 ARM综合编程--LED--ADC--UART--中断--PWM综合示例按键和旋钮控制音乐

包括歌曲和音符数组。定义控制LED灯和按键的GPIO地址(这里你需要提供准确的硬件位置信息)。定义用于ADC旋钮调节音量的变量。// 全局变量定义// 两只老虎// 生日快乐// abcdefg// 祝你平安// 音符对应的频率表// 当前播放的歌曲索引// 当前音符位置// LED 和按键的 GPIO 地址(根据你的实际硬件位置调整)volatile// 全局变量定义 char song0 [ ] = {// 两只老虎 char song1 [ ] = {

2024-10-11 14:56:51 638

原创 ARM编程--->ADC编程实例

【代码】ARM编程--->ADC编程实例。

2024-10-11 14:38:23 1254

原创 ARM编程--->控制PWM波产生音乐

初始化GPIO为PWM输出。控制 PWM 定时器。

2024-10-11 11:16:06 1008

原创 ARM编程四--->中断编写流程

all:# 使用交叉编译器编译 start.S 汇编文件,生成目标文件 start.o。# -fno-builtin: 禁用内置函数,避免使用 GCC 的内置库函数。# -nostdinc: 不使用标准的 include 头文件,适合裸机编程。# -c: 只编译,不链接。# -o start.o: 输出目标文件名为 start.o。# 使用交叉编译器编译 main.c C 源文件,生成目标文件 main.o。# 其参数与前一个命令相同,只是编译的文件不同(C 文件而非汇编文件)。

2024-10-11 10:43:31 1115

原创 ARM知识点三和串口代码的编写流程

串口(Serial)是一种常见的通信方式,它通过串行传输数据,即一次一位地发送或接收数据。- 外设板: 外设板通常包含了许多外部设备,这些设备通过各种接口与核心板的 CPU 连接,用于扩展系统的功能。str 指令:CPU 使用 str(store register)指令,将寄存器的数据写回存储器或外设的寄存器中。- 核心板:能让CPU正常运行的最小系统,主要组件:CPU,flash,RAM,电源,串口,晶振。- 核心板和外设板通过接口(如 GPIO、I2C、SPI、UART 等)进行连接和通信。

2024-10-11 00:15:28 1137

原创 系统移植知识点归纳总结一

【代码】系统移植知识点归纳总结一。

2024-10-10 16:46:41 641

原创 系统移植四和制作RAMDisk 文件系统

制作 RAMDisk 文件系统:通过 dd 命令创建 RAMDisk 镜像文件,并格式化为 ext2 文件系统。将已测试好的根文件系统复制到 RAMDisk 中,并压缩镜像为 ramdisk.gz。配置内核支持 RAMDisk:使用 make menuconfig 配置内核以支持 RAMDisk,并设置默认的 RAM 磁盘大小。重新编译内核并将内核和 RAMDisk 镜像上传至 /tftpboot,方便后续通过 U-Boot 启动。

2024-10-10 16:19:29 1687

原创 系统移植三

系统启动:系统加载内核,内核初始化硬件设备,并启动第一个用户进程 init。读取 inittab 文件:init 进程读取 /etc/inittab 文件,执行里面定义的初始化任务。执行 rcS 脚本:init 进程执行 /etc/init.d/rcS 脚本,完成系统的初始化操作,包括挂载文件系统、启动关键服务等。用户程序启动:通过将自定义程序加入 /etc/init.d/rcS 脚本的尾部,系统在启动时会自动运行该程序。

2024-10-10 15:01:45 1182

原创 系统移植二和网卡移植实验和私有驱动LED的移植

驱动文件的集成:通过修改 Kconfig 和 Makefile 文件,将驱动集成到内核中,并在 menuconfig 中显示配置项。驱动的编译方式:可以选择将驱动编译到内核中(内建)或编译为模块(动态加载)。模块的灵活性更高,便于在需要时加载。测试程序的编译与执行:通过交叉编译工具编译应用程序,并将其放置到目标文件系统中,用于与驱动通信。设备节点:通过 mknod 创建字符设备节点,作为应用程序与驱动的通信接口。

2024-10-10 13:12:58 767

原创 系统移植一

U-Boot(Universal Bootloader)是一款广泛用于嵌入式系统中的开源 Bootloader,支持多种 CPU 架构,如 ARM、PowerPC、x86、MIPS 等。它体积小、功能强大,广泛用于嵌入式系统启动和调试。U-Boot 与其他 Bootloader 的对比:BIOS(通常用于 PC):大约 300MB,功能强大,带有图形用户界面。Recovery 模式(用于 Android):大约 3.5MB,功能一般,界面较为简单。

2024-10-10 00:47:48 1403

原创 ARM硬件知识补充

保护电路:在电路中,二极管可以作为保护元件,例如用于防止反向电压损坏敏感元件。常见的有续流二极管,它用于保护感性负载(如继电器或电机)中的电子元件,防止反向感应电动势造成的损坏。三极管还具有稳压功能,可以用于稳定电压。通过调整三极管的工作状态,可以使电路的输出电压保持稳定。单向导通:二极管具有正向导通和反向截止的特性,电流只能从正极(阳极)流向负极(阴极),因此它可以用于防止电流逆向流动,保护电路。稳压:**稳压二极管(齐纳二极管)**在反向击穿时,可以维持恒定的电压输出,用于电源稳压。

2024-09-29 17:57:00 780

原创 Linux下驱动开发实例

它是一种 6 轴运动传感器,能够同时测量设备的加速度和角速度,因此广泛应用于姿态检测、航向控制、运动追踪等领域。这个驱动程序是一个用于 Linux 内核的简单平台设备驱动,目的是控制 GPIO(通用输入输出)引脚上的设备,比如一个 LED。它的功能主要包括初始化设备、配置 GPIO 引脚、中断处理,以及清理和释放资源。代码实现了一个 MPU6050 I2C 设备的 Linux 驱动程序,用于与 MPU6050 加速度计和陀螺仪传感器进行通信。Linux I2C 核心 API。

2024-09-29 17:24:20 1875

原创 LINUX下的驱动开发三

【代码】LINUX下的驱动开发三。

2024-09-27 18:01:25 1387

原创 Linux下的驱动开发二

用于全局管理驱动程序的状态和资源。在驱动开发中,有时需要一个全局的数据结构来保存设备的状态、驱动配置、缓存、锁等信息,这样不同的驱动程序函数可以通过该结构体访问和修改共享的资源。作用统一管理驱动状态: 全局结构体通常保存驱动程序的各种状态信息。例如,设备的注册信息、分配的内存、硬件寄存器映射等都可以保存在这个结构体中。共享资源: 驱动程序通常会有多个函数被内核调用,比如初始化函数、读写函数、中断处理函数等。使用全局结构体,可以让这些函数方便地共享和访问同样的数据或资源。

2024-09-27 16:55:18 1139

原创 Linux下的驱动开发一

模块许可证声明(MODULE_LICENSE):指定模块的许可证类型,通常为"GPL"(GNU General Public License),表明模块可以与内核兼容,否则内核可能拒绝加载非GPL的模块。模块初始化函数(module_init):这是内核加载模块时调用的函数,用来初始化模块,注册设备驱动或其他功能。通常通过module_init()宏指定初始化函数。模块退出函数(module_exit):这是在卸载模块时调用的函数,用于清理资源、注销设备驱动等。

2024-09-27 12:59:57 1330

原创 面试知识点总结篇四

组成,每个字节由两个十六进制数字(0-9,A-F)表示,共有12个十六进制数字,如06-EA-56-3B-4F-4D。32位和64位是常见的字长,64位系统能够处理更大的数据量和内存地址。为网络层提供服务:无确认的无连接服务、有确认的无连接服务、有确认的面向连接服务。主要功能:端到端通信、复用和分用、差错检测、流量控制、拥塞控制(仅限TCP)端口号:端口号长度为16bit,能够表示65536(216)个不同的端口号。构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。码分多址(CDMA)

2024-09-25 17:44:49 1109

原创 面试知识点总结篇三

联合体(union)允许在相同的内存位置存储不同的数据类型,成员共享内存。

2024-09-24 11:14:00 1030

原创 面试知识点总结篇二

临界区是指在并发编程中,多个线程或进程访问共享资源时,可能导致数据不一致的代码区域。由于这些资源(如变量、数据结构或设备)只能被一个线程或进程在同一时间安全地访问,因此临界区需要通过同步机制来控制访问。

2024-09-23 21:16:30 1018

原创 面试知识点总结篇一

运算符重载(Operator Overloading)是面向对象编程中的一种技术,它允许程序员重新定义或扩展已有的运算符(如 +、-、*、/ 等)在自定义类或对象上的行为。public:// 重载加法运算符(+)// 使用重载的 + 运算符// 输出 4 + 6ireturn 0;嵌入式系统是一种专门为执行特定任务或功能设计的计算机系统,通常嵌入到更大的设备或系统中。嵌入式系统的特点包括资源有限、对实时性的要求高、功耗低以及高度定制化。僵尸进程是指一个已经终止但仍然存在。

2024-09-23 15:33:16 2379

原创 FreeRTOS的一些知识点

【代码】FreeRTOS的一些知识点。

2024-09-18 19:11:06 1322

原创 任务间通信

【代码】任务间通信。

2024-09-18 18:00:46 1258

原创 freeRTOS 任务的创建、挂起、恢复

【代码】freeRTOS 任务的创建、挂起、恢复。

2024-09-14 21:41:02 675

原创 FLash存储

【代码】FLash存储。

2024-09-14 11:12:39 787

原创 RTC、ADC

【代码】RTC、ADC。

2024-09-13 23:08:03 693

原创 STM32的使用:u8g2

【代码】STM32的使用:u8g2。

2024-09-12 23:41:23 2092

原创 STM32与ESP8266的使用

【代码】STM32与ESP8266的使用。

2024-09-12 16:40:05 3698

原创 STM32使用 :串口的接收与发送

通常将 printf 函数的输出重定向到 UART,这样你可以使用 printf 在终端上输出调试信息。需要实现 __io_putchar 函数来将字符发送到 UART。对USART1模式设置为Asynchronous,即为异步通信方式,当然你也可以在这里设置串口的具体参数。设置RCC的high SPeed CLock的模式为Crystal/Ceramic。UART1挂载到APB2总线上,设置APB2为64MHZ即可。实际上是对__io_putchar的改写。www.mcuisp.com下载即可。

2024-09-11 19:37:00 1151

原创 STM32时钟配置图详解

System Clock Mux:选择系统主时钟(SYSCLK)的源。可以选择HSI、HSE或PLL。图中选用了PLL时钟。RTC(Real-Time Clock):实时时钟,用于时间管理,通常连接在低速时钟(LSI或LSE)上。AHB总线通常用于高速外设和DMA控制器,负责连接核心系统、存储器以及外设。CRC:循环冗余校验(CRC)计算单元,用于数据完整性校验。

2024-09-10 20:01:48 1512

原创 STM32使用定时器、PWM波

【代码】STM32使用定时器、PWM波。

2024-09-09 23:15:34 1280

原创 STM32的使用方法一

【代码】STM32的使用方法一。

2024-09-07 23:35:11 1028

CAN的协议的相关文档

CAN协议入门书,CAN总线协议-V2.0(中英),TJA1050数据手册

2024-10-19

FS4412开发板手册说明书

FS4412开发板手册说明书

2024-10-19

W25Q64BV芯片手册

W25Q64BV芯片手册

2024-10-18

MPU6050寄存器代码h

MPU6050寄存器代码h

2024-10-18

ARM编程四 编译链接规则

ARM编程四 编译链接规则

2024-10-11

ARM编程GPIO管脚的使用

ARM编程GPIO管脚的使用

2024-10-10

系统移植二和网卡移植实验和私有驱动LED的移植

系统移植二和网卡移植实验和私有驱动LED的移植

2024-10-10

系统移植二和网卡移植实验和私有驱动LED的移植

系统移植二和网卡移植实验和私有驱动LED的移植

2024-10-10

u8g2库,可以在OLED和LED上面绘制图像

u8g2库,可以在OLED和LED上面绘制图像

2024-09-12

eps8266的源代码

eps8266的源代码

2024-09-12

eps8266的源代码

eps8266的源代码

2024-09-12

矩阵键盘代码头文件参考下载范例

矩阵键盘代码参考下载范例

2024-09-07

矩阵键盘代码参考下载范例

矩阵键盘代码参考下载范例

2024-09-07

空空如也

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

TA关注的人

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