自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 上下拉电阻

在单片机内置上拉电阻的情况下,外部再加一个10K的上拉电阻是有作用的。外部上拉电阻可以提供更强的拉高能力,增强抗干扰能力和响应时间。根据具体应用需求,可以选择合适的上拉电阻配置。内部上拉电阻和外部上拉电阻在功能上是相似的,但在实现和应用上有一些区别。内部上拉电阻和外部上拉电阻在功能上是相似的,但在实现和应用上有一些区别。内部上拉电阻集成在芯片内部,配置简单,但阻值固定;外部上拉电阻灵活性高,可以根据具体应用需求选择合适的阻值,提供更强的拉高能力。根据具体应用需求,可以选择合适的上拉电阻配置。

2025-03-15 11:34:03 581

原创 IAR 工具整个工程的宏定义

在项目选项窗口中,选择左侧的“C/C++ Compiler”选项。在右侧的选项卡中,选择“Preprocessor”选项卡。在“Defined symbols”字段中,你可以添加宏定义。每个宏定义之间用分号(;)分隔。例如:DEBUG;VERSION=1;在项目选项窗口的顶部,选择你要配置的构建配置(如Debug或Release)。按照上述步骤在“Preprocessor”选项卡中设置宏定义。如果你使用命令行构建项目,也可以通过命令行参数设置宏定义。

2025-03-15 11:32:38 895

原创 摩托罗拉和英特尔字节顺序

摩托罗拉字节顺序(大端字节序):最高有效字节存储在最低地址处,常用于网络协议。英特尔字节顺序(小端字节序):最低有效字节存储在最低地址处,常用于英特尔架构的处理器。理解字节序对于跨平台开发、网络通信和低级编程非常重要。

2025-03-11 19:01:49 436

原创 Linux命令复习

列出目录下的所有文件和子目录,通常包含 systemd 服务的配置文件。ls /:列出根目录下的所有文件和子目录,显示系统的主要文件夹。这两个命令用于查看不同目录下的内容,帮助用户了解系统文件和目录的结构。在使用vi保存并退出按Esc键进入命令模式。输入:wq然后按Enter键,保存文件并退出vi编辑器。直接退出(不保存)按Esc键进入命令模式。输入:q!然后按Enter键,不保存文件并退出vi编辑器。误用:会在当前目录下创建一个名为myfile.txt的目录。解决方法:使用。

2025-03-08 11:35:14 708

原创 df命令学习

df命令是一个非常有用的工具,可以帮助你查看系统中各个文件系统的磁盘空间使用情况。通过使用不同的选项,你可以获得更详细和特定的信息,以便更好地管理和监控系统的磁盘空间。!在使用df -T命令查看文件系统类型时,你可能会看到不同类型的文件系统,如ext4tmpfs和devtmpfs。ext4ext4文件系统:第四代扩展文件系统,常用于存储用户数据和系统文件,具有高性能和高可靠性。tmpfs文件系统:基于内存的临时文件系统,适用于存储临时文件和缓存数据,数据在系统重启后会丢失。devtmpfs文件系统。

2025-03-08 11:34:57 591

原创 mount /dev/sda1 /mnt 命令挂载文件系统

将设备文件/dev/sda1挂载到/mnt目录,使你可以通过/mnt目录访问该分区上的文件系统。设备文件/dev/sda1:表示第一个 SATA 硬盘的第一个分区。挂载点/mnt:用于访问挂载的文件系统的目录。通过理解和使用mount命令,你可以在 Linux 系统中挂载和访问不同的文件系统。在 Linux 和类 Unix 操作系统中,挂载(mount)是将一个文件系统连接到现有的目录树中的过程。挂载使得文件系统中的文件和目录可以通过挂载点访问。

2025-03-08 11:34:41 1020

原创 AUO屏参学习

建议最终对照C031VAN02数据手册的时序图确认参数定义,以确保完全匹配。THSW(脉冲宽度)THBP(HS后廊)

2025-03-08 11:34:05 596

原创 关于引脚复用功能的使用

当前配置:PTB17 被配置为禁用状态(),这不适合用于 SPI 通讯。建议配置:将.mux配置为相应的 SPI 功能(例如),以使 PTB17 能够用于 MCU 与 OSD 芯片的 SPI 通讯。请根据你的具体硬件和 SPI 配置参考手册,确定 PTB17 对应的 SPI 功能,并将.mux配置为正确的值。.base = PORTB, // 36 OSD_CS 63 MCU与OSD芯片SPI通讯},当前配置:PTB17 被配置为禁用状态(),这不适合用于 SPI 通讯。建议配置:将.mux。

2025-03-08 11:33:23 966

原创 /etc/profile 文件

ls -la命令用于以长格式列出目录内容,并显示所有文件(包括隐藏文件)。通过使用-l和-a选项,可以查看每个文件的详细信息和隐藏文件,从而更全面地了解目录的内容。是一个用于创建命令别名的命令。命令用于创建一个名为ll的别名,该别名相当于执行命令。通过使用这个别名,可以简化输入命令的过程,并且在列出目录内容时自动添加颜色,以便更容易区分文件和目录。这条命令的意思是将字符串追加到文件的末尾。命令用于将字符串追加到文件的末尾。这样,当用户在命令行中输入ll时,系统会执行。

2025-03-08 11:32:51 994

原创 升级包打包和刷机命令学习

命令:用于显示所有网络接口的信息,包括当前未激活的接口。输出信息:包括接口名称、硬件地址、IP 地址、子网掩码、广播地址、接口状态、最大传输单元、接收和发送的数据包数量等。通过使用命令,你可以查看系统中所有网络接口的详细信息,帮助你进行网络配置和故障排除。是一个用于创建压缩归档文件的命令。:创建一个名为的压缩归档文件,并将当前目录下的所有文件和子目录包含在内。选项解释c:创建新的归档文件。z:通过gzip压缩归档文件。v:显示详细信息。f:指定归档文件的名称和路径。目标归档文件。

2025-03-08 11:32:23 591

原创 标准输出(stdout)标准错误(stderr)重定向

尝试将当前工作目录切换到。:将错误消息重定向到/dev/null,即丢弃错误消息。||(逻辑或操作符):如果前一个命令失败,则执行后一个命令。:如果前一个cd命令失败,则尝试将当前工作目录切换到。通过这种方式,可以在尝试切换到第一个目录失败时,自动尝试切换到第二个目录,从而实现一种简单的错误处理机制。是一个用于将标准错误输出(stderr)重定向到/dev/null的命令。:将标准错误输出重定向到/dev/null,即丢弃错误消息。:将标准输出重定向到/dev/null,即丢弃正常输出。

2025-03-08 11:31:45 965

原创 运行可执行文件或脚本

是一个文件路径,表示位于目录下的mcuservice文件。该文件可能是一个可执行文件或脚本,用于执行特定的服务或程序。你可以通过运行该文件来执行其中的指令,具体行为取决于文件的内容和用途。通过理解文件路径和文件类型,可以更好地管理和使用系统中的可执行文件和脚本。输出的内容是命令的结果,描述了文件的类型和一些详细信息。文件类型:该文件是一个 ELF 格式的 64 位可执行文件。架构:该文件是为 ARM AArch64 架构编译的。动态链接:该文件是动态链接的,需要在运行时链接到共享库。

2025-03-08 11:30:49 854

原创 镜像文件包命令

创建目录创建挂载点目录/tmp/udisk。挂载设备:尝试将设备/dev/sda1挂载到/tmp/udisk,如果失败则尝试挂载。创建磁盘映像:使用dd命令创建磁盘映像文件,输入文件根据当前挂载的文件系统动态确定。同步数据:使用sync命令确保所有数据写入磁盘。执行dbus-gpio命令:根据当前挂载的文件系统动态确定参数,执行dbus-gpio命令。通过这些步骤,可以实现挂载设备、创建磁盘映像并执行特定操作的自动化流程。在dd命令中,if=和of=用于指定输入文件和输出文件。ddif=

2025-03-08 11:29:16 536

原创 IAR 调试报错—工作区文件分析

以下是一个简单的THUMB;保存当前任务的上下文STMDB R0!, {R4-R11};切换到下一个任务LDMIA R0!, {R4-R11};返回到下一个任务BX LR在 IAR 调试过程中,如果程序跳转到并进入无限循环,通常是因为发生了未处理的 PendSV 中断。用户应提供自己的实现,以处理上下文切换或其他系统级任务。检查中断向量表和中断配置,确保 PendSV 中断正确配置并指向用户提供的实现。在 IAR 调试过程中,如果程序跳转到并进入无限循环(B .

2025-03-01 15:35:07 906

原创 device_registers.h 文件和system_S32K146.h

这个头文件 device_registers.h 主要用于包含与特定 CPU 相关的寄存器访问层头文件。它通过检查预定义的 CPU 宏来包含相应的寄存器定义和特性头文件,并提供了一些基本的文件信息和保护机制。这一行代码用于包含与 S32K146 微控制器相关的系统配置头文件。这个头文件通常包含系统初始化函数、系统配置宏和常量,以及系统控制函数。通过包含这个头文件,可以确保在使用 S32K146 微控制器时,系统能够正确初始化和配置。

2025-02-28 08:27:50 597

原创 中断向量表的基地址设置

这段代码通过条件编译来设置 VTOR 寄存器的值,以适应不同的调试或运行环境。如果定义了DebugerUse,则 VTOR 被设置为0x00000000;否则,设置为。在以下情况下,可能需要将设置为0x00000000调试模式:如果你正在进行调试,并且希望中断向量表位于地址0x00000000,可以通过定义DebugerUse宏来实现这一点。这通常用于调试环境,以确保中断向量表在一个已知的、固定的位置。特定硬件配置:某些硬件配置可能要求中断向量表位于地址0x00000000。

2025-02-28 08:19:16 641

原创 汇编指令学习

DCD指令用于定义 32 位常量,并将其存储在内存中。在中断向量表中,DCD指令用于存储中断处理程序的地址。当发生中断时,处理器会根据中断向量表中的地址跳转到相应的中断处理程序执行。__Vectors被定义为,表示中断向量表的起始地址。被定义为,表示中断向量表的大小。中断向量表用于存储中断处理程序的地址,当中断发生时,处理器会根据中断向量表中的地址跳转到相应的中断处理程序执行。以下是对LDRMOVBLXBL和CPSIE指令的详细解释和示例:PUBWEAK。

2025-02-28 08:14:29 937

原创 linux命令学习

i2cdump是一个强大的工具,用于读取 I2C 设备的寄存器内容。通过理解其输出格式和使用方法,你可以方便地调试和验证 I2C 设备的通信。使用-f和-y选项可以强制访问设备并跳过用户确认提示,适用于自动化脚本和批处理任务。是一个用于获取 Weston 合成器(Wayland 显示服务器)的信息的命令行工具。Weston 是 Wayland 的参考合成器,可以显示有关 Wayland 显示服务器和连接的客户端的信息。是一个有用的工具,用于获取 Weston 合成器和 Wayland 显示服务器的详细信息。

2025-02-26 20:28:05 703

原创 结构体写法

【代码】结构体写法。

2025-02-26 20:21:26 103

原创 处理器的时钟周期

在函数中,asm("Nop");指令用于产生一个处理器周期的延迟。通过循环执行这个指令,可以实现指定数量的处理器周期的延迟。在这个例子中,延迟 100 个周期是指延迟 100 个处理器时钟周期。具体的时间长度取决于处理器的时钟频率。/** Return :*/// 初始化返回状态为成功// 执行SPI传输操作// if(SPI_MPU == channel) // 如果需要根据具体的SPI通道进行条件判断,可以取消注释并修改此行// 调用LPSPI驱动进行主传输。

2025-02-26 20:20:49 224

原创 硬件版本号

【代码】硬件版本号。

2025-02-26 20:19:37 150

原创 UDS(统一诊断服务)协议S3定时器和P2定时器

在UDS协议中,S3定时器用于管理诊断会话的超时。当新会话类型为扩展会话状态时,启动S3定时器是为了确保在扩展会话状态下,如果诊断工具长时间没有发送请求,ECU能够自动恢复到默认会话状态,避免长时间占用扩展会话资源。而在新会话类型为默认会话状态时,停止S3定时器是为了节约系统资源和简化会话管理,因为默认会话状态是ECU的基本状态,不需要复杂的超时处理。通过这种机制,确保了诊断通信的稳定性和安全性。在UDS(统一诊断服务)协议中,P2定时器用于管理ECU(电子控制单元)在接收到诊断请求后的响应时间。

2025-02-26 20:18:22 743

原创 开源工具链

使用 GCC、CMake 和 OpenOCD 作为开源工具链来开发嵌入式系统是一种常见且强大的组合。以下是对这三者的介绍及其在嵌入式开发中的应用。

2025-02-26 20:15:42 892

原创 备份值的使用技巧

函数用于更新 PWM 值,并在值发生变化时发送新的命令。通过这种方式,可以有效地控制 PWM 信号,并避免不必要的命令发送。则保存上一次的 PWM 值。通过比较这两个值,可以判断 PWM 是否发生了变化,从而决定是否需要发送新的命令。这两个变量的使用主要是为了实现对 PWM(脉宽调制)信号的控制,并且避免重复发送相同的命令。表示当前的 PWM 值,而。

2025-02-26 20:09:58 210

原创 flash使用理解

使用Flash:存储程序代码、常量数据和中断向量表(在系统启动时)。使用SRAM:存储运行时数据、需要快速访问的初始化数据和代码、中断向量表(在调试模式或需要动态修改时)。通过合理地使用SRAM和Flash,可以优化系统性能和资源利用率。

2025-02-26 20:08:44 667

原创 BOOT跳转APP

通过正确设置VTOR寄存器,并跳转到应用程序的入口点,可以实现从 Bootloader 到应用程序的自动跳转。在 Bootloader 中,VTOR设置为0x00000000,而在应用程序中,VTOR设置为应用程序的起始地址(例如0x00018000这样可以确保中断向量表正确指向,并且应用程序能够正常运行。Description :SysTick中断函数// 设置1ms标志位为TRUE,表示1ms时间到达// 计数器自增1// 如果计数器达到10ms的值// 重置计数器。

2025-02-26 20:07:38 750

原创 屏参配置知识

HSYNC是一个用于指示每一行开始的信号。HSW是 HSYNC 信号的脉冲宽度,表示 HSYNC 信号高电平或低电平的持续时间。希望这能帮助你理解行同步信号(HSYNC)和行同步脉冲宽度(HSW)之间的区别。在显示屏的参数中,HBP(Horizontal Back Porch)和VBP(Vertical Back Porch)是指水平和垂直方向上的后沿间隔时间。这些参数在不同的显示屏和控制器中可能有不同的定义和计算方式。以下是对这些参数的详细解释,以及如何理解它们在不同屏幕中的差异。

2025-02-26 20:03:15 766

原创 升级刷写技术

特性诊断仪刷写EOL刷写OTA升级连接方式物理连接(OBD接口)生产线编程设备无线通信(Wi-Fi、蜂窝网络)使用工具专用诊断仪生产线专用编程设备车辆内置通信模块和OTA服务器适用场景维修站或服务中心车辆生产过程中用户随时随地优点可靠性高,适用于复杂升级确保出厂时软件版本一致性方便快捷,用户体验好缺点需要物理连接,操作时间较长只能在生产线上进行需要确保无线通信的安全性和可靠性。

2025-02-26 20:00:16 277

原创 s32k146中断向量表

向量表部分定义了系统异常和中断服务程序的入口地址,每个条目占用 4 字节,总共 16 个条目,占用 64 字节。这些条目包括堆栈顶指针、复位处理程序、各种故障处理程序和系统服务处理程序。通过设置这些条目,系统能够在发生异常或中断时正确地跳转到相应的处理程序。

2025-02-26 19:59:47 307

原创 哈希表(Hash Table)和链表(Linked List)

哈希表和链表是两种不同的数据结构,各有优缺点和适用场景。哈希表通过哈希函数实现快速的查找、插入和删除操作,适用于需要高效访问数据的场景。链表通过节点和指针实现动态存储,适用于需要频繁插入和删除操作的场景。通过理解它们的区别,可以根据具体需求选择合适的数据结构。

2025-02-22 11:04:18 648

原创 C语言集合抽象数据类型

100// 集合的最大容量// 定义集合结构// 存储集合元素的数组int size;// 集合当前大小} Set;集合是一种抽象数据类型,用于存储不重复的元素。通过使用数组,可以实现集合的基本操作,包括插入元素、删除元素、查找元素、求并集、求交集和求差集。上述示例代码展示了如何用C语言实现集合的这些基本操作,并提供了详细的注释以帮助理解每个函数的作用。在C语言中,的计算顺序涉及到运算符的优先级和结合性。为了理解这一点,我们需要了解运算符的优先级和结合性规则。的执行顺序是先访问set。

2025-02-22 11:03:50 288

原创 结构体描述寄存器生成配置表

【代码】结构体描述寄存器生成配置表。

2025-02-22 11:03:16 250

原创 ADC采样流程学习

在嵌入式系统中,ADC(模数转换器)通道通常对应于特定的引脚。每个ADC通道可以连接到一个特定的引脚,以读取该引脚上的模拟信号并将其转换为数字值。因此,ADC通道和引脚之间存在对应关系。在你的代码中,枚举类型定义了多个ADC通道,每个通道对应一个特定的引脚。以下是对代码的详细解释:详细注释::::::::::::假设你有一个温度传感器连接到引脚,你可以通过标签来读取该传感器的ADC值:通过这种方式,你可以方便地管理和使用多个ADC通道和对应的引脚。对函数的详细解释,包括为什么从总和中减去当前指针位

2025-02-22 11:01:57 965

原创 指针学习使用

在C语言中,和是等价的,都是将temp的值赋给所指向的地址,然后将指针递增。可以将代码简化为,使代码更加简洁。

2025-02-22 10:54:52 164

原创 内存要划分为堆栈原因

特性栈(Stack)堆(Heap)管理方式自动管理手动管理分配速度快慢内存碎片化无可能有生命周期短,随函数调用周期长,由程序员控制适用场景局部变量、函数参数、返回地址动态内存分配、大对象内存大小限制通常较小,受限于操作系统和编译器设置通常较大,但受限于系统可用内存栈的LIFO特性完美匹配函数嵌套调用,确保后调用的函数先返回。通过编译器自动为每个函数调用分配栈帧,包含返回地址、参数和局部变量,实现了栈的自动化管理。函数返回时自动弹出栈帧,无需手动管理。

2025-02-22 10:52:50 554

原创 结构体管理全局变量

能够将多个相关变量组合成一个逻辑单元。:将相关的全局变量集中在一个结构体中,形成清晰的模块化分组。但需注意合理设计结构体,避免滥用导致代码臃肿。),避免不同模块间的命名冲突。)替代独立的全局变量名(如。结构体是C/C++中一种。:通过结构体成员名(如。

2025-02-21 20:10:30 735

原创 Freertos路线学习

信号量就像厕所门口的钥匙,抢到了才能进去,但小心优先级反转,比如低优先级任务拿着钥匙不撒手,高优先级任务急得干瞪眼,这时候就得靠互斥锁的。PS:如果你简历里写了“精通FreeRTOS”,那就准备好被问内存管理(heap_4和heap_5的区别)、Tickless低功耗模式怎么实现、以及怎么移植到新芯片(比如重写port.c里的汇编部分),不过一般开发岗位不会抠这么细(以后越来越卷也说不定),能讲清楚本文开头的那些核心机制,足够拿下大多数嵌入式岗位的RTOS的压力面了。我分几个方面来唠唠,尽量用大白话来说。

2025-02-21 20:06:23 903

原创 实时操作系统定义

实时性是指系统在规定的时间内响应和处理事件的能力。在实时系统中,任务的执行时间和响应时间是可预测的。硬实时系统:严格要求任务在规定的时间内完成,任何延迟都是不可接受的。例如,航空航天控制系统。软实时系统:允许偶尔的延迟,但大多数情况下任务需要在规定的时间内完成。例如,多媒体播放系统。FreeRTOS通过任务优先级、抢占式调度、时间片轮转和中断处理等机制来实现实时性。理解和合理使用这些机制,可以确保任务在预定的时间内完成,提高系统的实时性和稳定性。

2025-02-21 20:05:05 406

原创 任务间的同步和资源访问

关中断(:用于短时间的临界区保护,确保代码段不被中断打断。调度器锁(:用于长时间的临界区保护,确保代码段不被任务切换打断。互斥量(:用于任务间的互斥访问,防止优先级反转。递归锁(:用于递归调用的场景,同一个任务可以多次获取同一个互斥量。中断服务函数中的信号量和队列:在中断服务函数中使用带中断保护版的API,确保中断服务函数的执行不会被阻塞。通过合理使用这些机制,可以有效管理任务间的同步和资源访问,提高系统的稳定性和效率。

2025-02-21 20:02:33 310

原创 互斥锁和信号量

互斥锁:用于保护临界区,确保同一时间只有一个任务可以访问共享资源,支持优先级继承和递归锁定。信号量:用于任务间的同步和资源计数,控制多个资源的访问,不支持优先级继承和递归锁定。通过合理使用互斥锁和信号量,可以有效管理任务间的同步和资源访问,提高系统的稳定性和效率。在FreeRTOS中,互斥锁和信号量的API接口是相同的,都是通过和来进行操作。这是因为FreeRTOS将互斥锁实现为一种特殊类型的二进制信号量,并且提供了优先级继承机制来防止优先级反转问题。互斥锁和信号量的API接口相同。

2025-02-21 20:01:24 577

空空如也

空空如也

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

TA关注的人

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