- 博客(189)
- 收藏
- 关注
原创 VH6501 Usage & Busoff Test
主机厂会对设备提出相应的Busoff后恢复时间需求,例如:当ECU 进入Busoff 模式后,ECU 执行快恢复模式,连续n次(TBD值,不同厂商次数要求不一样)快速恢复后,ECU 进入慢恢复模式。本次测试radar的TBD值为5,因此设置Repetitions=10,验证快恢复5次后进入慢恢复模式,且之后一直处于慢恢复模式,直到干扰结束。B家所有雷达基本上右边为主雷达,左边为从雷达,主雷达才有公Can报文。由上图可以看出,当干扰32次后,雷达再次发出报文的时间间隔约为100ms,雷达进入快恢复模式。
2025-04-17 10:55:18
437
原创 Cantata Wrap
Cantata provides stubs with instances and call sequence control.However Cantata wrapping is a powerful alternative technique for unit and integration testing which intercepts calls made by the software under test to the real called object rather than simu
2025-03-18 13:56:01
991
原创 MQTT(消息队列遥测传输协议)入门
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。在计费系统中,消息重复或丢失会导致不正确的结果。这就是为什么在介绍里说它非常适合"在物联网领域,传感器与服务器的通信,信息的收集",要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
2025-02-10 09:31:19
554
原创 如何加快大型程序的编译速度
只重新编译修改的文件及其相关依赖,而不是整个项目,可以通过增量编译工具或构建系统来实现,减少了不必要的重新编译。将一些稳定的和不经常修改的头文件预编译为预编译头文件(PCH),可以减少编译时的头文件依赖解析和编译时间。将常用的库编译成静态链接库,在编译时直接链接静态库,避免了动态链接库的加载和链接过程,加快编译速度。将项目拆分为多个模块,分别进行编译,然后并行构建,可以同时编译多个模块,加快整体编译速度。检查项目的依赖关系,去除不必要的依赖项,减少编译时的冗余操作,提高编译速度。
2025-02-08 16:55:56
343
原创 内存四区
全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。由编译器自动分配释放,存放函数的参数值,局部变量的值。其操作方式类似于数据结构中的栈。一般由程序员分配释放,若程序员不释放,程序结束后可能由OS回收。,如果要站在汇编角度细分的化还可以分为很多小的区。常量字符串就是放在这里的。程序结束后自动释放。1. 操作系统把物理硬盘代码load到内存。2. 操作系统把c代码分成四个区。存放函数体的二进制代码。
2025-02-02 14:56:52
284
原创 变量的作用域和生命周期
当不同作用域里面有两个或者多个同名变量,那么遵循就近原则。定义在函数或者块语句里面的变量,在函数或语句内部,超出作用域就不能使用变量了。全局变量:定义在所有函数外部的变量,一般是当前代码文件的最上面,从定义开始,整个文件里面都可以使用。全局变量会自动初始化为0。
2025-02-01 18:24:16
343
原创 Git 安装 操作 命令 远程仓库 多人协作
,于是BitMover公司怒了,要收回Linux社区的免费使用权。先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。
2025-01-17 19:26:55
1424
原创 JSON 数据类型 序列化 反序列化
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。
2025-01-07 18:10:27
1685
原创 内核链表 例题 C语言实现
type为1代表bool类型,2代表整形,3代表浮点型。无需解析文本,直接赋值形成节点即可。将下面的数据节点信息转换为链表结构,并遍历输出。要求根据type的值来决定val的类型。
2025-01-06 22:42:32
467
原创 内核链表 C语言实现
当然,调用者完全可以自己缓存next指针使遍历操作能够连贯起来,但为了编程的一致性,Linux链表仍然提供了两个对应于基本遍历操作的“_safe”接口:list_for_each_safe(pos,n, head)、list_for_each_entry_safe(pos, n, head, member),它们要求调用者另外提供一个与pos同类型的指针n,在for循环中暂存pos下一个节点的地址,避免因pos节点被释放而造成的断链。与之相对应,list_del_init()函数将节点从链表。
2025-01-06 22:31:01
726
原创 C++例题 派生类 虚函数
设计一个基类和它的派生类,验证机制。说明:可自行定义这些类的数据成员,但是基类中应有 表示食物类型(肉或草)、年龄的数据成员,设定每种动物进食的成 员函数 eat()预留接口(即纯虚函数)和显示年龄的成员函数;各个子类中应有各自的构造函数和同名成员函数版本。要求:在主函数中,每个派生类创建两个对象,打乱次序 存于一个数组中,然后用循环程序访问其成员函数和, 必须体现出虚函数特性。
2025-01-04 17:13:38
316
原创 C++例题 运算符重载 点类直线类
设计一个三维空间点类以及由三维空间两个点确定的直线类,实现如下功能:(1)使用运算符重载实现计算两点之间的距离;(2)使用运算符重载判断两条直线是否共面;(3)点对象数组到某一个直线对象距离最小值;(4)编写主函数验证以上功能。
2025-01-04 17:07:24
308
2
原创 I2C接口
I2C(Inter-Integrated Circuit)是一种广泛使用的串行通信协议,由飞利浦公司开发并于1982年发布。它允许多个设备通过只有两条线的总线进行通信:一条串行数据线(SDA)和一条串行时钟线(SCL)。I2C协议的主要特点:简单易用、节省引脚、支持多主多从模式,以及具有应答机制以增强通信的可靠性。软件I2C,通过控制引脚的高低电平实现I2C协议的I2C协议的应用场景非常广泛,包括嵌入式系统、电子设备、工业控制和汽车电子等。
2024-12-28 15:36:06
351
原创 SPI接口
SPI接口是Motorola 首先提出的采用(Master Slave)架构。时钟由Master控制,在时钟移位脉冲下,数据按位传输,;SPI接口有2根单向数据线,为全双工通信。SPI总线被广泛地使用在FLASH、ADC、等设备与MCU间,要求的场合。(1)MOSI:主器件数据输出,从器件数据输入(2)MISO:主器件数据输入,从器件数据输出(3)SCLK :时钟信号,由主器件产生(4)/SS:从器件使能信号,由主器件控制(片选)
2024-12-28 15:32:37
950
原创 GPIO的输出模式 输入实验 利用光电开关,控制LED亮灭
2. 此时再次输入带有电阻减小电流后的5V时,由于5V大于3.3V,此时上方的保护二极管导通(二极管单向导电性:正极电压 > 负极电压,导通,负极电压 > 正极电压,截止),导通时,二极管两端的电压会被“钳位”,所谓钳位,就是限制电压不超过VDD(导通压降0.3V),因此交点处输入的电压就被限制在3.3V。由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的,易受干扰。
2024-12-28 15:18:22
1069
原创 USART 通信 串口
RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。RS-485能够进行远距离传输主要得益于使用差分信号进行传输,当有噪声干扰时仍可以使用线路上两者差值进行判断,使传输数据不受噪声干扰。:通信双方有自己独立的系统时钟,大家约定好通信的速度。RS232串口是我们常用的通讯接口之一,它主要用来进行人机交互,它最常用的接口形式如下图这种接口。电平标准:输出 L:<0.4V;两根信号线,一根发送数据,另一根接收数据,真正实现同时收发数据,速度快。
2024-12-28 15:13:06
704
原创 SPI实验 LED数码管
LED数码管(LED Segment Displays)是由8个发光二极管构成,并按照一定的图形及排列封装在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点(固有时成为八段数码管)。LED数码管有两大类,一类是共阴极接法,另一类是共阳极接法,共阴极就是7段的显示字码共用一个电源的负极,是,共阳极就是7段的显示字码共用一个电源的正极,是。如图,要显示数字“5”时,编码为0x6D。如果数码管为共阳极,只需要对共阴极的编码做一个取反操作即可。
2024-12-28 14:41:38
469
原创 回声函数 printf重定向 sht20温湿度传感器
这意味着,当USART的数据寄存器中的数据被完全发送出去,并且移位寄存器也为空时,TC位会被设置。TC位的使用通常与中断服务相关。当TC位被设置时,如果相应的中断使能位(TCIE)被设置,那么会产生一个中断请求,允许微控制器的中断服务程序(ISR)处理发送完成的事件。在中断服务程序中,通常需要清除TC位以避免重复进入中断,这可以通过读取USART_SR寄存器和写入USART_DR寄存器来完成,或者使用库函数USART_ClearFlag(USART1, USART_FLAG_TC)来清除。
2024-12-28 10:47:14
1079
原创 点亮核心板小灯 STM32U575
三极管,全称半导体三极管,也称为双极型晶体管(BJT, Bipolar Junction Transistor),是一种控制电流的半导体器件。对于微控制器和微处理器 Arm Cortex-M,第二步包括配置每个必需的嵌入式软件,这要归功于引脚冲突求解器、时钟树设置助手、功耗计算器以及配置外设(如 GPIO 或 USART)和中间件堆栈(如 USB 或 TCP/IP)的实用程序。如果您决定启用lCACHE,可以按照警告信息中的指示,在开发环境的引脚配置界面找到ICACHE设置,并启用它。
2024-12-24 14:27:46
1260
原创 GPIO简介
GPIO,General Purpose Input Output,指的是芯片的通用输入输出引脚。通过配置对应引脚的输出模式,我们可以进行LED灯的点亮,继电器的开闭控制;在输入模式下,读取按键开关的状态,模拟输入状态下,我们可以读取温湿度传感器的数据。除了以上使用情况,也可以作为I2C,SPI,串口的引脚等。
2024-12-24 14:16:45
357
原创 STM32CubeMX卸载和安装教程
1.访问:Cube库获取: https://www.st.com.cn/content/st_com/zh.html。不同芯片系列有不同的支持包,没必要装全部的支持包,只装自己常用的即可(如:F1、F4等)6.等待卸载完成,点击 Finished ,点击 Quit 完成卸载。5.选择需要的产品序列,及其版本号,点击Install以安装。6.STM32CubeMX 会自动访问网页,下载,解压。1.在 windows 随便找一软件,右击,点击卸载。12.选中下载的F1的库,点击 打开。
2024-12-24 14:07:44
3976
原创 keil5安装教程
MDK-ARM V4 和 V5版本在安装的时候最大的区别在于:V4版本安装包里面集成器件的支持包,而V5版本是独立出来,自己下载安装的,因此需要对应自己芯片型号,下载相应的器件支持包。待右下角进度条读完后,可以使用在线安装窗口安装pack。更新后,这里显示的即是,Keil所有支持的器件。安装完成后会自动弹出pack安装窗口。
2024-12-24 13:50:30
1052
原创 单片机 STM32入门
单片机(Microcontroller Unit,MCU)是一种集成电路芯片,它将计算机的CPU、存储器(包括RAM和ROM)、输入/输出接口等集成在一个芯片上。单片机通常用于嵌入式系统,能够执行特定的控制任务,如数据采集、处理和输出控制信号(小电脑)。
2024-12-24 13:47:33
724
原创 keil卸载教程
如果残留的路径信息没有被清除,可能会导致Keil5在寻找文件或库时出现问题,特别是如果这些路径过长或包含特殊字符。:残留的文件和注册表项可能会导致软件兼容性问题,使得Keil5无法与操作系统或其他软件正常兼容。:残留的文件和设置可能会使得重新安装Keil5变得困难,因为新旧版本的文件可能会发生冲突。:残留的文件可能会与系统中的其他程序发生冲突,导致Keil5运行时崩溃或出现其他错误。:如果许可证信息没有被清除,可能会影响新版本的Keil5的许可证管理,导致许可证问题。
2024-12-24 13:45:16
4077
4
原创 ARM原理
当执行未定义指令时进入,支持通过软件仿真硬件的协处理在特定的模式下,一般会执行特定的代码,完成某个特定功能。除了用户模式,其余所有模式均为特权模式。这几种工作模式可以进行切换,可以通过外部硬件进行切换也可以通过软件编程来进行切换。进入特权模式的异常模式 是为了处理相应的中断user和system共用一套寄存器1. 概念寄存器属于处理器内部寄存器,没有地址,只有编号,使用者只能通过编号对寄存器进行操作。2. 作用一般存放暂时需要运算的数据。
2024-12-18 13:39:29
1294
原创 开发阶段 Linux环境
系统运行的时候所必须的一些脚本/配置文件需要通过一定的手法进行压缩解决历史遗留问题安装库的时候 可能系统已经安装了比库依赖版本还要高的。这时候可以借助aptitude工具来解决降级问题。执行hq@ubuntu:~$ sudo apt-get install aptitude安装aptitude工具使用aptitude工具来进行安装hq@ubuntu:~$ sudo aptitude install libncurses5-dev选择n拒绝当前方案给出新的降级方案。
2024-12-17 09:57:58
765
原创 ARM体系架构
推出Cortex-M0+、 ARM首款64位处理器架构Cortex-A53、 Cortex-A57 架构。1990年,艾康财务危机,受苹果和VLSI (最早做超大规模集成电路的公司)的投资,成立独立子公司:Advanced RISC Machines ( ARM),ARM公司正式成立面世。2014年,推出Cortex-M7(F) 微控制器架构;2015年,推出64位Cortex-A35、 Cortex-A72 处理器架构.2017年,推出64位Cortex-A55 、Cortex -A75处理器架构.
2024-12-16 15:14:43
1499
原创 多路IO复用之epoll Linux环境 C语言实现
监听指定集合中所有的文件描述符,如果所有的文件描述符都没有数据准备好, epoll_wait函数阻塞等待。如果有文件描述符数据准备好,epoll_wait直接将直接将准备好的文件描述符信息放到指定数组中。监听集合中所有的文件描述符, 如果有文件描述符数据准备好了,直接解除阻塞,把数据准备好的文件描述符放到指定内存中。占用资源最少,但仅用于对任意客户端请求的处理都是短平快的场合,且同时并发数受系统描述符数组大小的控制。传入参数,接收有数据准备好文件描述符信息数组的起始地址。设置超时时间,以毫秒为单位。
2024-12-11 16:35:19
742
原创 消息队列 Linux环境 C语言实现
long mtype;/*消息的类型*//* 消息的内容 */long mtype;return -1;return -1;return -1;return 0;
2024-12-11 14:11:20
1103
原创 处理pipe匿名管道异常退出情况 Linux环境 C语言实现
通过signal,如果管道断裂,内存会自动发送SIGPIPE信号,此时我们将这个信号连接到我们自己的信号处理函数上,就可以进行处理了。处理完后raed()返回0,程序继续运行,正常退出。read函数退出,write端自动退出(闪退)。我们在这篇文章中就处理一下管道的闪退情况。在pipe管道中,write函数退出,read端刷屏(read变为非阻塞函数)。
2024-12-05 15:33:33
180
QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现
2024-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人