自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软实时(Soft Real-Time)和硬实时(Hard Real-Time)系统

总结来说,硬实时系统强调任务必须在严格的时间范围内完成,适用于安全关键应用。软实时系统则对时间要求较为宽松,任务在大多数情况下应在特定时间内完成,但偶尔的延迟是可以接受的,不会导致系统失败。- **防抱死制动系统(ABS)**:必须在特定时间内响应传感器数据并调整制动压力,以防止车轮抱死。- **导航系统**:在大多数情况下应及时更新路径信息,但偶尔的更新延迟是可以接受的。- **娱乐信息系统**:如车载音响系统,偶尔的延迟不会影响其正常功能。- 任务的及时完成是优先的,但偶尔的延迟不会导致系统失效。

2024-07-20 22:20:41 98

原创 不同控制器 会发送相应部件的温度 为什么还需要VCU 控制器来转发?

在汽车电子系统中,VCU(Vehicle Control Unit,车辆控制单元)是一个关键的集成控制模块,负责协调和管理多个子系统和控制器的工作。温度信息作为重要的数据之一,需要通过VCU进行汇总和转发,以确保各个系统模块之间的数据一致性和有效性。- VCU作为整个车辆的中央控制单元,需要获取各个子系统的温度信息,以便进行统一的管理和协调。综上所述,将不同控制器发送的温度信息转发给VCU,不仅有助于集中管理和协调各个系统的工作,还能提升车辆的安全性、能效和用户体验。

2024-07-18 22:58:24 144

原创 什么是扭矩 什么是转矩

总结来说,虽然“扭矩”和“转矩”在某些情况下可以互换使用,但在汽车发动机中,“扭矩”是更常用的术语,用来描述发动机输出的旋转力。- **应用**:通常用于描述机械系统中旋转部件的作用力,比如螺栓的拧紧力、汽车发动机的驱动力等。- **应用**:更广泛地用于物理学和工程学中,描述力对物体产生的旋转效果。- **定义**:转矩也指的是作用在物体上的力矩,导致物体绕某一轴旋转。- **定义**:扭矩是指作用在物体上的力矩,导致物体绕某一轴旋转。- **单位**:与扭矩一样,常见单位是牛·米(Nm)。

2024-07-18 22:30:07 178

原创 C 语言 do while 语句

循环首先执行 `printf` 语句,然后增加 `count` 的值。`do while` 循环是 C 语言中的一种循环结构,它至少执行一次循环体内的代码,然后再根据条件判断是否继续执行。这与 `while` 循环不同,`while` 循环在开始时就会检查条件,如果条件不成立,则循环体内的代码一次也不会执行。使用 `do while` 循环时需要注意,如果循环体内部有可能会使条件永远为真,从而导致无限循环,应该确保有适当的逻辑来改变条件,使得循环能够在适当的时候终止。如果条件为假(零),则循环终止。

2024-07-15 17:08:47 294

原创 STM32 基础知识

它用于将物理世界中的模拟信号(如温度、声音、光线等)转换为数字信号,以便微处理器进行处理。3. **SPI (Serial Peripheral Interface)**: 串行外设接口是一种高速的、全双工、同步的通信接口,用于短距离通信,连接CPU和外部设备,如EEPROM、闪存、ADC、DAC等。8. **SDIO (Secure Digital Input/Output)**: 安全数字输入/输出是一种扩展的SD卡标准,允许SD卡除了存储功能外,还提供I/O功能,如Wi-Fi、蓝牙、GPS等。

2024-06-19 11:27:16 584

原创 看门狗 WDG

它通常由硬件定时器和相应的软件组成,当系统中的软件没有在预定时间内喂狗(即重置定时器)时,看门狗会发出一个复位信号,重启系统。- **监控对象**:窗口看门狗通常用于监控特定的软件进程或任务的执行时间。总的来说,独立看门狗和窗口看门狗都是为了监控嵌入式系统的运行状态而设计的,但它们在监控对象、灵活性和应用场景上有所不同。- 窗口看门狗提供更多的灵活性,因为它允许设置特定的时间窗口,并在窗口外触发复位。- 窗口看门狗监控特定的软件进程或任务,要求任务在设定的时间窗口内完成。- 通常是一个12位的递减计数器。

2024-06-19 11:24:48 600

原创 Check Point和WDG定时器在汽车控制器软件中的作用

*检查点**用于验证系统的运行状态,通过定期的检查确保系统的各个部分正常运行。而**看门狗定时器**则通过定时器超时机制来检测系统卡死或死循环,触发系统复位。**检查点(Check Points)**和**看门狗定时器(Watchdog Timer, WDG)**都是用于提高系统可靠性的重要机制。2. **工作原理简单**:系统需定期复位看门狗定时器,防止定时器超时。4. **主要用于**:实时系统和安全关键应用,确保系统在遇到严重故障时能够自动恢复。// 假设我们有一个看门狗定时器API。

2024-06-17 00:58:35 393

原创 CAN 通讯

波特率(Baud Rate)是指数据通信中每秒传输的符号(或脉冲)的数量。在CAN(Controller Area Network)通信中,波特率通常表示每秒传输的位数(bit per second,bps),例如125 kbps、250 kbps、500 kbps或1 Mbps等。波特率是决定CAN网络数据传输速度的重要参数。

2024-06-17 00:52:29 585

原创 编译产物之间的关系

关于 `.o` 文件和 `.d` 文件的生成顺序和关系,一般情况下 `.d` 文件是编译过程中生成的依赖文件,而 `.o` 文件是在编译源文件后生成的目标文件。因此, `.d` 文件通常比 `.o` 文件先生成。3. `.a` 文件(静态库):这是一个包含多个 `.o` 文件的归档文件,允许重用代码而无需每次都重新编译这些文件。2. `.d` 文件(依赖文件):这是编译器生成的依赖信息文件,通常包含源代码文件与其依赖的头文件之间的关系,用于确保在头文件修改后重新编译相关的源文件。

2024-06-14 16:15:16 287

原创 VBA基础知识

VBA 中的数据类型主要分为三大类,一个是数字类型,一个是非数字类型,一个是通用类型。&:这是字符串连接运算符,用于将两个字符串或表达式连接成一个字符串。VBA:Debug.Print()/立即窗口。1.单击视图-->>单击立即窗口。方法:Offset(行,列)2.使用快捷键:Ctrl+G。Ctrl+A,然后Del。

2024-06-14 09:21:36 161

原创 EXCLE VBA 基础知识

VBA(Visual Basic for Applications)是一种针对 Microsoft Office 程序编程的集成开发环境(IDE),其中包括 Excel、Word、PowerPoint 等。它是一种基于 Visual Basic 语言的编程工具,用于自动化和定制化 Office 应用程序,通过编写 VBA 代码,可以实现自动执行任务、创建自定义函数和运行宏等功能。在 Excel 中,可以使用 VBA 来编写自定义的宏(Macro),以实现一系列的自动化操作。

2024-06-12 14:24:58 479

原创 语言中 函数用地址传参的好处

传递一个指针(通常是一个地址)比传递一个大的结构体或数组要高效得多,因为指针通常是一个固定大小(例如,在32位系统上是4字节,在64位系统上是8字节),而大的结构体或数组可能占用大量内存。在这个示例中,`increment`函数通过指针访问并修改了`main`函数中的变量`a`的值。- 当需要传递大数据结构(如数组或结构体)时,传递指针避免了对数据的拷贝,显著提高了效率。- 如果你希望函数能够修改传递给它的变量的值,那么你需要传递该变量的地址。通过传递指针,函数可以访问和修改原始数据,而不是其副本。

2024-06-10 16:02:51 456

原创 第六讲:AD、DA的工作原理及实现、运放电路

数模转换器(Digital-to-Analog Converter,简称DAC)是一种将数字信号转换为模拟信号的电子装置。DAC在各种电子设备中广泛应用,如音频设备、通信系统、测量设备和控制系统中。以下是DAC的主要概念和应用。

2024-06-04 22:57:29 247

原创 第五讲:独立键盘、矩阵键盘的检测原理及实现

检测IO口的电平时,需要先给高电平 之后便进入输出状态在这个示例中,首先将P1.0引脚置为高电平,然后通过读取P1寄存器的值来检测P1.0的电平状态。

2024-06-03 22:03:48 259

原创 第四讲:数码管的动态显示原理及应用实现

2024-06-03 21:03:05 83

原创 第三讲 数码管显示的原理、数码管的静态显示

实质上是利用视觉暂留的原理,快速的切换哪一位数码管点亮,因为段选都是公用的,同时点亮,只会输出同样的数字。晶振:工作输出正弦波,电容帮助起振。

2024-05-31 00:43:53 454

原创 第二讲 流水灯设计 蜂鸣器发声

频率:串口通讯。

2024-05-30 21:35:26 292

原创 第一讲 点亮LED

用于定义和操作单片机的特定位(bit)。它是 Keil C51 编译器中定义特殊功能寄存器(SFR,Special Function Register)中特定位的一个关键字。电阻的分类 上拉电阻 下拉电阻 限值电阻。OE :out enable —低电。Z高阻态 介于高电平和低电平之间的。LE :所存寄存器的所存端。所有IO口默认都是高电平。二进制与十六进制的转换。

2024-05-26 23:46:56 258

原创 函数指针的运用

2. **定义函数指针**:在 `main` 函数中,定义了一个函数指针 `funcPtr`,指向返回类型为 `int`,参数类型为 `(int, int)` 的函数。1. **定义函数**:定义了四个函数 `add`、`subtract`、`multiply` 和 `divide`,分别用于加法、减法、乘法和除法运算。3. **使用函数指针**:将 `funcPtr` 分别指向四个不同的函数,并通过 `funcPtr` 调用这些函数。这里有一个详细的示例,展示了如何在C语言中定义和使用函数指针。

2024-05-18 23:15:55 139

原创 基础数据类型

并不包含布尔类型,布尔类型通常是用户自己定义的。可以是有符号或无符号。

2024-05-18 22:50:53 107

原创 C语言中 如何存储一个字符串

在 C 语言中,字符串的本质就是一系列字符(包括最后的 `null` 终止符)存储在一个连续的内存空间中。所有处理字符串的标准库函数(如 `strlen`、`strcpy`、`strcmp` 等)都依赖于这个 `null` 终止符来确定字符串的结束位置。在 C 语言中,一个字符串实际上是一个以 `null` 字符(即 `'\0'`)结尾的字符数组。这个字符串被存储在一个字符数组中,每个字符占据一个字节(在大多数系统上),并且数组的最后一个元素是 `'\0'`,表示字符串的结束。### 存储字符串的方式。

2024-05-17 20:50:18 917

原创 CheckSum & Rollingcounter&BusOff & TimeOut

它通过对数据进行特定算法计算生成一个校验值,并将这个校验值附加到数据后面。接收方在收到数据后使用相同的算法重新计算校验值,并与附加的校验值进行比较。当一个节点检测到过多的错误(例如传输错误或接收错误)时,会进入Bus Off状态。Time Out是一种用于判断是否在规定时间内接收到预期数据的机制。在通信协议中,设定一个时间窗口,如果在这个时间窗口内未接收到预期的数据或响应,则触发超时处理逻辑。这些机制在汽车控制器网络中广泛应用,以确保数据传输的可靠性和系统的稳定性。

2024-05-16 22:20:45 663 1

原创 结构体的定义

如果结构体需要在多个源文件中使用,通常会将其定义放在头文件中,并通过 `#include` 指令在其他源文件中包含这个头文件。- 例如,定义一个名为 person 的结构体,可以将其放在 `person.h` 头文件中,并在需要使用的源文件中包含该头文件:#include "person.h"如果需要在多个源文件中共享结构体定义,则应该放在头文件中;如果仅在一个源文件中使用,则可以直接在源文件中定义。- 如果结构体仅在单个源文件中使用,可以直接将其定义在该源文件中。

2024-04-23 13:59:08 435

原创 程序是怎样跑起来的读书笔记_0411

主存有可读写的元素构成,每个字节(一个字节=8位)都带有一个地址编号。在计算机系统中,执行器(Execution Unit)包括控制单元和算术逻辑单元(ALU),负责解释指令并执行相应的操作。寄存器(Registers)则用于暂时存储指令、数据和中间结果,以供执行器使用。因此,执行器是负责对指令进行解释和运行的关键组件,而寄存器则用于辅助执行器完成指令的操作。程序启动后,根据时钟信号,控制器会从内存读取指令和数据,通过对这些指令加以解释和运行,运算器就会对这些数据进行运算。控制器根据结果控制计算机。

2024-04-11 23:44:05 697

原创 程序是怎样跑起来的读书笔记_0410

这样做的好处是,高级语言可以提供更高层次的抽象和易用性,使得程序员可以更方便地编写和维护代码,而无需直接处理底层的机器语言。同时,编译器和解释器负责将高级语言的代码转换成机器语言,从而实现了跨平台的能力,使得同一份高级语言代码可以在不同的计算机系统上运行。时钟信号的节拍确保指令的顺序执行和时序的正确性,从而保证程序的正确运行。通过调整时钟频率,可以实现对计算机系统性能的调节,以满足不同应用场景的需求,例如提高性能以执行复杂任务,或降低性能以节省能源。时钟:发出CPU开始计时的时钟信号。

2024-04-10 20:19:03 846 1

原创 程序是怎样跑起来的读书笔记_0409

IED :集成开发环境 Integrated Development Environment程序的运行机制:机器语言程序加载到内存中,通过CPU进行解析和运行,进而计算机系统的整体的控制和数据运算也开始运行。

2024-04-09 22:23:33 134

原创 C语言程序设计(一、二)

个人的学习笔记本着实用精简的原则也可利用关键字 进行知识的回顾与掌握

2024-04-08 20:38:42 320

原创 C语言——结构体

在这个示例中,Person 是结构体类型的名称,它定义了一个包含了三个成员变量的结构体类型。person1则是该结构体类型的一个变量,用于存储一个具体的人员信息实例,包括姓名、年龄和身高等信息。- 结构体变量的创建通过结构体类型的名称和变量名来完成,通过使用结构体类型的名称来声明新的变量,从而创建了该类型的实例。-结构体类型定义了一种抽象的数据结构模板,描述了该类型的成员变量的类型和顺序,但没有具体的实际值。- 结构体变量是结构体类型的实例化对象,它表示了具体的数据实例,结构体类型:结构体的抽象模板。

2024-04-07 20:32:03 354

原创 C语言程序设计代码示例

【代码】C语言程序设计代码示例。

2024-04-07 19:37:40 91

原创 ‘\0‘ 和“\0“的区别

字符字面量通常只占用一个字节的内存空间,而字符串字面量会在结尾添加一个额外的空字符 (`'\0'`) 来标志字符串的结束,因此它会占用比字符字面量更多的内存空间。在你的代码中,当你使用 `"\0"` 表示空字符时,编译器会报错,因为 `"\0"` 被认为是一个包含空字符的字符串,而不是一个字符。修正后的代码使用了单引号 `'\0'` 来表示空字符,这样就符合了C语言的语法规则,并且能够正确地计算字符串的长度。当你在C语言中使用字符字面量时,应该使用单引号括起来,而字符串字面量应该使用双引号括起来。

2024-04-07 19:21:11 202

原创 C语言 指针

时,`printf` 函数会根据 `%s` 格式说明符去 `pd` 所指向的内存地址中寻找以 null 结尾的字符序列,并输出该序列。实际上,`pd` 的值是一个内存地址,而不是字符串本身。在C语言中,字符串常量在内存中是以字符数组的形式存储的,而指针变量 `pd` 只是存储了字符串常量的起始地址。虽然 `pd` 的值本身只是一个地址,但是在 `printf` 函数中,使用 `%s` 格式说明符会根据该地址找到相应的字符串并输出。指针是C语言的一种数据类型,指的是内存单元的地址。

2024-04-07 17:53:52 740

原创 C语言 指针

这段代码在运行后会出现未定义的行为(undefined behavior)。原因是在 `scanf` 函数中,你试图将用户输入的整数值直接存储到指针 `p` 指向的地址,而在此之前并没有为指针 `p` 分配内存空间。正确的做法应该是先为指针 `p` 分配内存空间,然后再将用户输入的整数值存储到该内存地址中。这样,程序将能够正确地将用户输入的整数值存储到变量 `m` 中,并打印出该值。

2024-04-06 22:29:23 163 1

原创 C语言函数调用传递数据的方法 举出例子

1. **传值调用(Call by Value)**:在传值调用中,实参的值被复制到形参中,函数内部对形参的。在传址调用中,实参的地址被传递给函数,函数可以通过指针对实参进行修改,从而影响外部的数据。// 函数定义,形参ptr是一个指针,可以通过ptr修改num的值。// 函数定义,形参x接收实参的值,但修改x不会影响到num。这意味着函数对形参的操作是局部的,不会影响到外部的数据。// 函数调用,传递的是num的地址。// 函数调用,传递的是num的值。// 输出结果,num的值被修改。

2024-04-06 18:14:16 472 1

原创 C语言中内存的分配条件

3. **局部变量**:在函数内部声明的局部变量,内存分配发生在函数调用时,当程序执行到声明语句时分配内存,当函数执行完毕或变量超出作用域时释放内存。2. **静态变量**:在函数内部使用 `static` 关键字声明的静态变量,内存分配仅在程序启动时进行,并且在程序运行期间保留其值和内存地址。1. **全局变量**:在函数外部声明的全局变量在程序启动时分配内存空间,并在程序运行期间一直存在,直到程序结束才被释放。1. **函数定义**:函数本身的定义不会直接导致内存的分配。// 在函数调用时分配内存。

2024-04-06 15:26:28 228 1

原创 什么是函数的实参和形参

什么是函数的实参和形参

2024-04-06 15:14:57 315 1

原创 C语言笔记

2. **手动去除末尾的零:** 如果你希望在程序中对结果进行处理,可以编写代码来手动去除末尾的零。1. **使用格式化输出:** 在输出结果时,通过格式化输出的方式控制小数点后的位数,从而去除末尾的零。按照标准的做法,我们应该将 main函数声明为 int main(),并在适当的位置返回一个整数值,通常是 0,表示程序正常结束。在进行数值计算时,如果你想要去除结果中末尾的零,可以使用一些方法来实现。以上是两种常见的方法,你可以根据具体情况选择适合你的方法来去除结果中末尾的零。

2024-04-03 21:01:02 247

空空如也

空空如也

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

TA关注的人

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