自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 CMSIS点灯

想起大学的时候还去傻傻移植标准库,一编译几百个报错,然后在寝室蒙着头慢慢改,这样的日子一去不复返了,哈哈。

2025-01-03 12:43:03 666

原创 卡尔曼滤波效果(python应用)

【Excel】卡尔曼滤波效果(应用)

2024-12-18 13:32:27 197

原创 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

原创 STM32H7 CRC(Buypass算法)

【代码】STM32H7 CRC(Buypass算法)

2023-06-19 17:48:56 417

原创 FPGA串口

在数据来的时候检测下降沿,并且拉高start信号,再进行波特率计数,溢出时累加接收到的比特数,在计数到波特率中间位置时去读取rx的值(也就是reg3),将包括起始位、停止位的字节数据存放到buffer里面去。

2023-06-02 18:13:52 257

原创 嵌入式C面试题

【代码】嵌入式C面试题。

2023-05-05 18:05:06 160

原创 STM32 编码器接口模式

通用定时器框图:手册详细一些:CubeMX配置。

2023-05-01 13:41:08 221

原创 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

原创 STM32F103C8T6汇编点灯

STM32F103C8T6汇编学习记录

2023-01-26 18:39:21 981

原创 Windows下cmake生成dll文件

cmake dll windows

2023-01-06 19:49:37 4724 3

原创 Windows下Cmake的简易工程构建

windows下的cmake简单示例

2023-01-01 14:15:26 919

原创 正点原子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

原创 函数指针,指针函数,void *p指针

C语言

2022-04-13 15:42:26 277

原创 Linux下的Hello world

Linux下的C

2022-03-24 11:27:35 1134

原创 蓝桥杯超声波

//蓝桥杯超声波模块#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

AHT10,MPU6050,SGP30,VL530LX,平衡车驱动代码

AHT10,MPU6050,SGP30,VL530LX,平衡车驱动代码

2024-01-28

STM32芯片包 F0 F1 F3 F2 F4 H7系列

STM32芯片包 F0 F1 F2 F4 H7系列 https://www.keil.arm.com/packs/

2023-06-20

STM32H7B0VBT6 7线SPI OLED显示

使用了STM32的硬件SPI,取消了GPIO的SPI模拟驱动。

2023-06-16

FPGA串口回环测试代码

FPGA将接收到的数据每1秒间隔发送一次,发送0x81点亮LED。

2023-06-03

MPU6050_Driver_C8.zip

基于STM32F103C8T6的MPU6050陀螺仪的实验,用正点原子的驱动,自己加以改动。

2021-04-05

图书管理系统设计以及论文(单链表)

适合作为大学生C语言实训参考资料,这是本人在实训中自己编写的一套完整的系统,注意一点:引用头文件时要将头文件的路径修改为你的电脑上的路径即可。

2020-12-20

空空如也

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

TA关注的人

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