- 博客(41)
- 资源 (2)
- 收藏
- 关注
原创 19服及子功能
这些子服务在UDS诊断中用于不同层级的故障信息获取,标准服务(如02、04)较为常用,而用户定义内存相关服务(17-1A)通常用于特殊需求或OEM定制场景。响应返回符合掩码条件的DTC列表,每个DTC包含3字节的DTC编号和1字节的状态位。类似于19 06(读取标准DTC的扩展数据),但针对用户自定义的扩展数据。每个快照记录对应一个DTC及其快照数据(如故障发生时的车速、电压等)。类似于19 02,但针对用户自定义的DTC存储区域(非标准DTC)。类似于19 02,但针对特定的DTC编号(而非状态掩码)。
2025-03-28 08:59:07
272
原创 博客摘录「 用Canoe CAPL发送诊断」2025年3月13日
使用场景: 例如执行case时,往往会碰到发送一个条件,然后又发送数据,然后收到的结果和预期进行对比这样的场景。②. 如果ECU未回复,则重发,如果超过了最大重试次数,则可能是CAN线没接。①. 如果收到78 NRC码直接忽略。①. 回复7F SID 78。
2025-03-22 12:07:31
184
原创 14229-2文档小结
ISO 14229-2 文档详细定义了 UDS 协议中会话层的服务、通信机制和错误处理方式。通过 SID 和 NRC 的定义,文档为汽车电子系统的诊断通信提供了统一的标准,确保了不同 ECU 之间的兼容性和互操作性。如果需要更详细的内容或具体示例,可以参考文档的附录部分或相关标准(如 ISO 14229-1)。的内容,包括服务标识符(SID)、否定响应码(NRC)以及会话管理的机制。19 服务提供了多种子功能,用于读取不同类型的 DTC 信息。的代码,用于标识具体的故障类型。标准的第二部分,主要定义了。
2025-03-09 12:13:55
744
原创 STM32堆栈溢出Bug
可以看到x和buf交换位置后,x处于0x200006B0地址上是不会被函数B影响到的,实际上B函数对buf赋值的过程是出现了越界行为的,所以导致了x在buf地址之后的话会被意外修改掉值。
2024-09-26 22:46:52
413
原创 使用Jlink给AT32下载程序
点击下载之后选择target device,这里我使用的是AT32F403ACGT7,M4内核,就选择Cortex-M4.然后我发现下载失败了,果断换算法。换好后即可下载,然后换回去又能下载了…如果已经选过了,但不知道选没选对,就把ini文件删除即可再次进行选择。我这里使用SW接线方式,选好后立马识别出来了。
2024-09-15 21:16:22
683
原创 使用J-Link Commander查找STM32死机问题
压栈顺序: R0、R1、R2、R3、R12、LR、PC、xPSR(这里存疑,如果被调用的函数有参数或者临时变量的传递可能就不只这几个寄存器被压入栈了)思路: 此时要定位到发生hardfault之前单片机的PC指向哪里才能确定是什么原因导致的hardfault错误。可以看到的确在CashCode函数中发生的hardfault。这里我已经连接过了STM32F407VET6了。这里我已经默认选择了SWD接口,4000K速率。可以看到已经发生了HardFault中断。的确来到了HardFault中断函数了。
2024-06-23 22:59:43
895
原创 STM32微秒级别延时--F407--TIM1
TIM1挂载在APB2总线上,150MHz经过15分频,得到10MHz计数频率,由于disable了自动重装载,所以只需要看下一次计数值是多少即可。定时60us,实际61.14us(428us/7)。定时70us,实际71.25us(570us/8)。定时2us,实际2.28us。定时3us,实际3.22us。定时1us,实际1.3us。
2024-05-04 12:59:32
1106
原创 FPGA串口
在数据来的时候检测下降沿,并且拉高start信号,再进行波特率计数,溢出时累加接收到的比特数,在计数到波特率中间位置时去读取rx的值(也就是reg3),将包括起始位、停止位的字节数据存放到buffer里面去。
2023-06-02 18:13:52
257
原创 STM32H7串口DMA
这个函数开启DMA接收,将收到的数据存放到Rxbuffer数组中去,当接收到了sizeof(Rxbuffer)个数据就会回调DMA1_Stream0_IRQHandler函数,再从HAL_DMA_IRQHandler继续回调HAL_UART_RxCpltCallback()这个函数。HAL_UART_RxCpltCallback是一个弱函数,需要自己去重写,否则默认HAL自带的形式。重写HAL_UART_RxCpltCallback()发送速度确实挺快的。
2023-04-30 20:01:13
1103
原创 STMF103C8T6 && H7B0VBT6 Flash记录
STM32F103C8T6 flash大小为64KB。建立flash.h flash.c文件。flash.h内容如下。
2023-04-29 12:07:13
458
原创 STM32H7B0VBT6芯片烧写程序踩坑记录
https://www.stmcu.com.cn/Designresource/detail/software/710763] 或。我这里分配了0x0000f000也就是60KB的RAM空间大小来存放算法文件(不要超过128KB)。1.新的芯片第一次烧写需要通过ST官方烧录软件CubeProgrammer进行串口烧写。连接串口(A9,A10号引脚),打开文件。keil下STlink下载报错。BOOT0拉高,下载即可.
2023-04-22 11:48:34
1802
2
原创 正点原子Linux学习之LED篇
思路如下:头文件:#ifndef LED_H#define LED_H/*********************************** * @By Ho_Yim * @此处定义结构体,寄存器基地址,宏 * * ********************************///寄存器基地址#define ccm 0x020c406c //CCGR0的地址#define iomuxc_sw_mux_ctl_pad_gpi
2022-04-17 12:00:00
482
2
原创 关于指针函数,我有些话要说
#include "stdio.h"int c = 100;int* add(int a,int b) //一段特殊的内存,它存放的是自己地址{ c = a + b; return &c; }int* (*Add)(int,int); //申明一个函数指针int main(void){ Add = add; //Add是一个指针变量,存放了指针函数(一个指针)的内容 printf(" &c:%p\n\n",&c
2022-04-15 09:49:40
94
原创 C语言指针综合应用
#include "stdio.h"#include "malloc.h"typedef char* string;typedef struct Calculator{ void *pointer; void (*PRINT)(int); //定义函数指针,此处不能再使用typedef int (*ADD)(int,int); //使用时需要初始化一个变量出来}Cal; //这种结构体不能用malloc函数初始化变量/*****************************
2022-04-13 21:20:19
570
原创 typedef void (*p)(void)说明
#include "stdio.h"void print(void){ printf("print\n");}void PRINT(void){ printf("PRINT\n");}//定义了一个别名为p0的函数指针typedef void (*p0)(void); //使用时要定义一个变量p0 p;/*******************************************************************/int (*p1)(int c,in
2022-04-13 19:47:22
1785
原创 define和typedef
#include "stdio.h"//#define string char* //只能替换,定义string str1 = "hello",str2 = "world",则会报错typedef char* string; //给类型起别名,且定义string str1 = "hello",str2 = "world"不会出错int main(void){ string str1 = "hello",str2 = "world"; printf("%s\n",str1); printf
2022-04-13 19:40:27
91
原创 C语言结构体函数指针
#include <stdio.h>#include <malloc.h>typedef struct Value //只有结构体变量才分配地址,而结构体的定义是不分配空间的{ int dat; char str;}Value;typedef struct Fun{ //只有结构体变量才分配地址,而结构体的定义是不分配空间的 int a,b; int m,n; void(*print)(void); //函数指针,是一个指针变量,指向某个函数的地址,
2022-04-13 18:55:37
2158
原创 蓝桥杯超声波
//蓝桥杯超声波模块#include "STC15F2K60S2.h" #include "intrins.h"sbit beep = P0^6;sbit a = P2^5;sbit b = P2^6;sbit c = P2^7;sbit trig = P1^0;sbit echo = P1^1;#define Y7C {a = b = c = 1;} //dula#define Y6C {a = 0;b = c = 1;} //wela
2022-02-25 12:36:20
778
原创 51外部中断学习记录
#include "reg52.h"void delay_ms(int x){ int i; for(;x>0;--x) for(i=110;i>0;--i);}main(){ EA = 1; EX0 = 1; EX1 = 1; IT0 = 0; //INT0:电平触发 IT1 = 1; //INT1:跳变沿触发 P2 = 0X55; while(1);}void Ex_INT0(void) interrupt 0 //外部中断服务函数
2021-11-24 14:46:33
102
原创 基于51的DS18B20驱动
#include "reg52.h"#include "stdio.h"#include "intrins.h"#define uchar unsigned char //1字节,8位#define uint unsigned int //2字节,16位sbit ds = P3^7; //DS18B20输出口/*************************************************************
2021-11-19 22:34:50
882
原创 基于51的HC_SR04学习记录
#include "reg52.h"#include "intrins.h"#include "stdio.h"/********************************************************************超声波工作原理: Trig脚先发出持续10us的高电平,然后echo接收到一定比例的声波,这期间echo为高电平,声波消失echo电平再次变为低电平***************************************************
2021-11-18 13:20:45
342
原创 51串口的学习记录
51串口的学习记录#include "reg52.h"#include "stdio.h"#include "intrins.h"/********************************Fm = Fosc/12 ===>>> Tm = 12Tosc********************************/char dat = 65;int num=0;void delayms(int x){ int t; for(;x>0;--x) f
2021-11-15 12:32:27
561
原创 5个小例子快速入门汇编(包括软件下载)
这学期结束了汇编的学习,光看书听老师讲是没有太大提高的。这里整理了一些代码,提供参考,也是我对汇编学习的总结。软件下载(百度盘):https://pan.baidu.com/s/1RTCBPFrJjSsuUKsI2ku-Gg提取码:9876data segment str DB 'Hello world!','$' ;调用ah的9号功能将dx中的内容输出,以‘$’结束 data endscode segment assume cs:code,ds:data run
2021-07-02 21:16:01
1469
原创 STM32中的定时器实现呼吸灯效果
最近用32的定时器来做个呼吸灯,之前看其他博主的代码觉得有点难以理解。自己决定再动手写个代码用来记录STM32的学习。中断的配置函数:#include "timer_1.h"#include "stm32f10x.h"/*1,时钟使能2,配置预分频、自动重装值和重复计数值3,清除中断标志位(否则会先进一次中断)4,使能TIM中断,选择中断源5,设置中断优先级6,使能TIMx外设arr:自动重装值 psc:时钟预分频数 */static void NVIC_init(voi
2021-04-16 18:50:07
1955
原创 基于STM32F103C8T6最小系统板的MPU6050陀螺仪实验
底板:STM32F103C8T6传感器:MPU6050,OLED驱动:正点原子(本人加以改动,因为原驱动比较复杂用了串口和上位机,而我用OLED实时显示MPU6050的数据做到了轻量化级别)接线:OLED(ISP):VCC—3.3VGND—GNDD0—PB9D1—PB8RES—PB6DC—PB5CS—GND(CS接地)MPU6050:VCC—3.3VGND—GNDSDA—PC14SCL—PC13(PC13也是STM32F103C8T6的灯,低电平点亮)因为我在入门学习M
2021-04-05 15:18:00
5625
原创 Java练习题(打印1 3 6 10 15......)
package Thinking_work;public class work_12 {public static void main(String[] args) { int m,n,sum=0; int start=1; int x = 1,y=0; int different_value_m = 2,different_value_n = 1; //different_value_x:差值从2开始,每一行依次加一 for(m = 5;m>0;--m) { y =
2021-04-01 16:44:14
477
原创 Java学习实例,用冒泡验证数字黑洞
用java语言来验证一下四位数的数字黑洞,代码如下:package Number_6174;import java.util.Scanner;public class number_6174 { private static void bubble_sort_up(int arry[]){ int i,j,t; for(i = arry.length-1;i>0;--i) for(j=0;j<i;++j) if(arry[j]>arry[j+1]) {
2021-03-19 13:41:52
389
原创 关于kernels启动报错的问题
错误描述:An error ocurred while starting the kernelYour Python environment or installation doesn’t have the spyder‑kernels module or the right version of it installed (>= 1.8.0 and < 2.0.0). Without this module is not possible for Spyder to create a co
2021-03-07 20:37:04
11248
7
原创 关于ESP8266和Micropython的学习笔记
大体思路:1.明白ESPB866自带wifi模块,实质上也是一款MCU。2.连接ESP8266单片机有两种方式:CH340(直接接线)和Wifi。3.Micropython是基于python3的一款简化版语言,它也继承了python的语法规则。4.在使用Micropython之前,需要进行ESP8266的Erase(这里推荐使用windows下的一款软件:ESP8266Flasher)。5.我们在使用Micropython编程之前需要下载固件(http://www.micropython.org/
2021-03-03 20:52:04
689
2
转载 记录一下Tensorflow中可能会遇到的坑
Tensorflow学习笔记以下为代码部分:import tensorflow as tfimport numpy as np# tf.disable_v2_behavior()# create datax_data = np.random.rand(100).astype(np.float32) # 一百个随机数列 定义数据类型#y_data = x_data*0.1+0.3 # W为0.3y_data = x_data*0.56+0.9...
2021-02-27 20:01:44
409
图书管理系统设计以及论文(单链表)
2020-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人