自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jason爱美腻的博客

一个十分无聊又帅气的男人。

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 嵌入式存储器分类

嵌入式存储模式讲解

2022-06-24 14:04:17 905 1

转载 CAN诊断常用服务详解

1.诊断会话控制服务(DSC) SID=0x10 1 .请求报文帧格式: 02 10 01 AA AA AA AA AA其中 10 为请求诊断会话控制ID01为诊断会话类型,也就是他的子功能00为保留 01位默认模式 02为编程模式 03为扩展模式(大部分服务在扩展模式下) 2.肯定响应报文帧格式:06 50 01 00 96 17 70 AA其中50为诊断会话控制肯定响应ID01为诊断会话类型(根据报文子功能类型进行改变) 3.否定响应报文...

2021-10-27 15:24:39 4087

原创 C语言中const关键字

C语言中const关键字是constant的缩写,通常翻译为常量、常数等,有些朋友一看到const关键字马上就想到了常量。事实上在C语言中const功能很强大,它可以修饰变量、数组、指针、函数参数等。本文将针对上述几种修饰功能详细做一个总结。1、修饰变量:C语言中采用const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。举例说明如下:const int i = 5;上面这个例子表明,变量i具有只读特性,不能够被更改;若想对i重新赋值,如i = 10;则是错误的。值得注.

2021-04-01 15:32:11 722 2

转载 int *p=a和int *p=&a的区别

2021-03-17 20:53:22 283

原创 细说static关键字、void和void指针、函数指针

static关键字  1.作用于变量:   用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期)。用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元。这样,使得该局部变量有记忆功能,可以记忆上次的数据,不过由于仍是局部变量,因而只能在代码

2021-03-17 20:38:20 769

原创 二极管基本电路之钳位电路

之前的限幅电路是对波形的幅值进行削减,而在一些应用中不能损坏原始波形要在原始波形的基础上进行向上或向下的平移,将信号峰值在所需要的电平上,此情况下需要使用钳位电路。二极管钳位电路比较简单由二极管、电容以及负载电阻组成。钳位效果如下图示意:钳位电路主要分为三类:正钳位电路、负钳位电路、带偏差的钳位电路。1. 正钳位电路(Positive Clamper)输入波形在正半周,二极管截止,相当于断路,电容充电至Vi。输入波形在负半周,二极管导通,相当于短路,Vo输出为0。根据基尔霍夫电压定律可以根据

2021-03-16 16:13:35 826

原创 单片机RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、FLASH、EEPROM的区别

RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、FLASH、EEPROM的区别RAM(Random Access Memory) 随机存储器。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。ROM(Read-Only Memory)只读存储器,是一种只能读出

2021-03-16 14:47:25 4513

原创 谐振产生的原因

解释:谐振是电场bai能量(电du)和zhi磁场能量(电感)不dao断交换的结zhuan果,当两者能量相同shu时,能量交换达到容最大值,从外界看这时电压(并联谐振时)或电流(串联谐振时)会达到很高的值。在高压回路中,由于线路等电气设备对地存在分布电容,再加上电压互感器之类的非线性铁磁元件电感的存在,当系统电压发生扰动,有很大的可能会激发谐振,由于铁磁元件的非线性,这一谐振会进一步增大,使对地产生很高的过电压,这个谐振在电力系统中叫铁磁谐振,当然在中性点接地系统中不存在铁磁谐振。微机消谐器可以通过电压互感器

2021-01-04 17:21:53 5740

原创 Data From Keil to Excel (keil数据导出至excel)

http://dl.ipaycenter.cn/csdn/down1.aspx?sign=A922716B9DAE6F2056BB0456DF83BCA7&cdk=C155B51D2183D3194C7C18EAE2BBBE53&fileid=FEF57920D017634AFCAAB2BA2A57F4B7&nstr=637443172108889873过时不候

2020-12-23 11:32:19 679

转载 正则表达式 - 语法

正则表达式 -语法正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如: runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。 runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0.

2020-11-24 18:51:36 1255

转载 Python strip()方法

Python strip()方法描述Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。语法strip()方法语法:str.strip([chars]);参数chars -- 移除字符串头尾指定的字符序列。返回值返回移除字符串头尾指定的字符生成的新字符串。实例以下实例展示了strip()函数的使用方法:实例(Python 2.0+)#!/usr/

2020-11-24 17:37:56 199 1

原创 关于pycharm已经安装了第三方模块‘xxx‘,但仍然提示 no module named‘xxx‘的情况

关于pycharm已经安装了第三方模块'xxx',但仍然提示 no module named'xxx'的情况首先,碰到这个问题之后无从下手,不知道是哪里的问题,然后就各种百度,中间过程就不说了,,,最后看到有一个博客说的是pycharm自带python解释器,而自己又在电脑上安装了python,那么可能你的插件安装到了你没有用的解释器里,试了之后发现正解。。1.pycharm自带python解释器,如果你在安装完pycharm后,没有进行设置的话,则默认选中使用的是pycharm自带的pyth.

2020-11-24 15:18:52 1266

原创 os.chdir()

概述os.chdir() 方法用于改变当前工作目录到指定的路径。语法chdir()方法语法格式如下:os.chdir(path)参数path -- 要切换到的新路径。返回值如果允许访问返回 True , 否则返回False。实例以下实例演示了 chdir() 方法的使用:#!/usr/bin/python# -*- coding: UTF-8 -*-import os, syspath = "/tmp"# 查看当前工作目录retval = .

2020-11-24 14:08:13 2542

转载 python中os.mkdir()函数

创建目录在Python中可以使用os.mkdir()函数创建目录(创建一级目录)。其原型如下所示:os.mkdir(path)其参数path 为要创建目录的路径。例如要在D盘下创建hello的目录>>> import os>>> os.mkdir('d:\hello')可以使用os.makedirs()函数创建多级目录。其原型如下所示:os.makedirs(path)其参数path 为要创建目录的路径。如在D盘下创建boo

2020-11-24 14:02:49 734

原创 python中进行JSON转化

序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程。JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式。在Python中,经常将字典转化成JSON来发送,使用的主要方法为dumps:import jsondata = {'name':'nick', 'age':12}data_json = json.dumps(data)注意以下几点:1.data_json为转

2020-11-24 13:54:17 628

原创 什么是Jason

什么是json:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使J

2020-11-24 13:43:48 1976

原创 ST AD注入通道说明

ST AD注入通道从上图就能看出,注入通道类似于程序中断,中断常规通道,执行注入通道,执行完完后再次返回原来的常规通道。其他的没什么区别!

2020-11-16 10:50:41 978

转载 STM32的优先级NVIC_PriorityGroupConfig的理解及其使用

写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置;此文思路:“中断优先级”思维导图-->关键要点--->结合图和要点相关程序应用例程讲解;我们先来看ST公司的一张图:我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 放大看;)前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_P...

2020-10-23 13:22:06 2259

转载 输出比较模式时的TIM_OCMode_PWM1和TIM_OCMode_PWM2区别

配合结构体成员TIM_OCInitTypeDef.TIM_OCPolarity来一起使用。 现在假定TIM_OCInitTypeDef.TIM_OCPolarity =TIM_OCPolarity_High,则起始波形为高电位。若TIM_OCInitTypeDef.TIM_OCMode =TIM_OCMode_PWM1时: 当计时器值小于比较器设定值时则TIMX输出脚此时输出有效高电位。 当计时器值大于或等于比较器设定值时则TIMX输出脚此时输出低电位。 ...

2020-10-23 10:16:19 2193

转载 STM32F103高级定时器死区时间的计算详细讲解

看了一些网上讲死区时间计算的教程,觉得讲述的不是很清楚,所以在此用我自己理解的方式讲述一遍,如有错误,请读者赐教。  死区时间的设置:由寄存器“TIM1和TIM8刹车和死区寄存器TIMX_BDTR”中,位DTG[7:0]控制(中文数据手册可能出现错误,应当是DTG)。  官方数据手册的说明不容易看懂,举的例子与我的应用场合也不一致,我使用的是72MHz的晶振,讲一讲我的死区时间是怎么算出来的。DT死区时间;TDTS为系统时钟周期时长;TDTG为系统周期时长乘以倍数,这个值用于计算最终死区时间,也叫

2020-09-28 15:14:04 6050 2

转载 堆和栈在实际应用中的难点和必要掌握的知识

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静

2020-09-24 16:27:04 393

转载 详讲堆和栈的区别基础应用篇

堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式;(2)数据结构场景下,堆与栈表示两种常用的数据结构。1.程序内存分区中的堆与栈1.1 栈简介栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。参考如下代码:int main(){ int b; //栈 char s

2020-09-24 11:29:44 692

转载 STM32F103时钟树讲解

时钟简介时序在数字电路中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了它,就像人类的历史有了时间轴一样,什么时候该干什么事才有了可能。程序中发生的事件,能够按照自己的意愿发生。时钟作用[ ]计时作用(供给某些计数器统计时间) [ ]控制时序(串口数据的传输,只能一位一位的传输) [ ]控制信号(将时钟的上升下降沿作为独特的控制标志)stm32时钟模型时钟源倍频器高速时钟高速外设低速时钟低速外设yesnos...

2020-09-23 17:15:42 1072

转载 PLL(锁相环)电路原理

(一)PLL(锁相环)电路原理 在通信机等所使用的振荡电路,其所要求的频率范围要广,且频率的稳定度要高。无论多好的LC振荡电路,其频率的稳定度,都无法与晶体振荡电路比较。但是,晶体振荡器除了可以使用数字电路分频以外,其频率几乎无法改变。如果采用PLL(锁相环)(相位锁栓回路,PhaseLockedLoop)技术,除了可以得到较广的振荡频率范围以外,其频率的稳定度也很高。此一技术常使用于收音机,电视机的调谐电路上,以及CD唱盘上的电路。一 PLL(锁相环)电路的基本构成PLL(锁相...

2020-09-23 17:13:12 6283

转载 CAN总线-位时序、波特率、采样点

CAN总线通讯协议的每一帧可以看作一连串的电平信号,每一个电平信号代表一位(一个字节8位的位),所以一帧中包含了很多个位,由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。 一位又分为4段,同步段(SS)、传播时间段(PTS)、相位缓冲段 1(PBS1)、相位缓冲段 2(PBS2)。 一位可以当作一条水平的时间轴,不同的段在整个时间轴的占比不一样,每一段又由若干个最小时间单元Time Quantum(以下称为 Tq)构成。 位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可...

2020-09-23 15:18:14 6086

转载 stm32之ADC应用实例(单通道、多通道、基于DMA)

硬件:STM32F103VCT6 开发工具:Keil uVision4 下载调试工具:ARM仿真器网上资料很多,这里做一个详细的整合。(也不是很详细,但很通俗)。所用的芯片内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,2个内部通道。3个:代表ADC1、ADC2、ADC3(下图是芯片固件库的截图)12位:也叫ADC分辨率、采样精度。先来看看二进制的12位可表示0-4095个数,也就是说转换器通过采集转换所得到的最大值是4095,如:“111111111111”=40

2020-09-23 14:06:55 3589 1

转载 STM32-ADC模块讲解

文章目录一.ADC简介 二.ADC功能框图讲解 1.电压输入范围 2.输入通道 3.转换顺序 4.触发源 5.转换时间 6.数据寄存器 7.中断 8.电压转换 三.初始化结构体 四.单通道电压采集 1.头文件 2.引脚配置函数 3.NVIC配置函数 4.ADC配置函数 5.中断函数 6.主函数 一.ADC简介STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个.

2020-09-17 16:21:58 11652 1

转载 ADC基础知识以及(一)

一、ADC几个步骤1、采样和保持如果把模拟信号比作无限采样点的数字信号,那么我们就需要采取其中一些有限点才能进行真正的数字化传输。采多少点?怎么采?奈奎斯特(Nyquist)采样定理:简单来说就是采样频率必须大于信号频率的2倍,fs≥2fn。这样才能重新恢复信号。如果不,会因为频谱混叠而无法复原,具体原因自行查找公式推导及分析。如下图频谱保持的意思简单理解就是让采样后的数值保存到下一步转换。2、量化和编码所谓的量化是把采样后的N多个点数值按照一定标准和步骤转化为数字式的.

2020-09-17 13:50:32 18121 3

转载 从零读懂CAN总线(下)

上一篇文章讲了CAN总线的历史、标准、物理层,现在接着介绍CAN总线数据链路层,和CAN总线同步机制。CAN数据链路层在SPI通信中,片选、时钟信号、数据输入及数据输出这四个信号都有单独的信号线。而CAN使用的是两条差分信号线,只能表达一个信号。简洁的物理层决定了CAN必然要配上一套更为复杂的协议。如何用一个信号通道实现同样甚至更强大的功能,答案就是对数据或操作命令进行打包。通信机制多主机(Multi-Master)安全敏感的应用(如汽车动力)对通信系统的可靠性要求很高。将总线能否正常工

2020-09-15 17:00:06 3102 1

转载 从零读懂CAN总线(上)

概要上世纪八十年代以来,汽车ECU越来越多,如ABS,电控门窗,电子燃油喷射装置。如果仍然采用常规的点对点布线方式,即电线一段与开关相接,另一端与用电设备相通,将会导致车上电线数目的急剧增加,从而带来线束的冗余及维修成本的提高。这就对汽车的线束分布及信息通讯提出了更高的要求。总线技术可以实现信息的实时共享,解决了传统布线方式中线束多,布线难,成本高等问题,CAN(Controller Area Network)总线技术应运而生。点对点通信总线通信CAN总线是由德国研发和生产汽车电子产

2020-09-15 16:58:35 7907 1

转载 CAN报文协议教程|CAN报文分析

介绍:CAN总线CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文。无法将报文单独发送给指定节点;所有节点都将始终捕获所有报文。但是,CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。总线使用不归零位填充。模块以线与逻辑连接到总线:如果只有一个节点向总线传输逻辑0,那么不管有多少个节点向总线传输逻辑1,整个总线都处于逻辑0状态。CAN标准定义四种不同的报文类型。报文使用逐位仲裁智能方案来控制对总线的访问,每条报文都带有优先级标记。CAN标准还为错误处理和

2020-09-14 17:38:28 12821

转载 CAN总线报文浅析

CAN的报文格式 在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。 在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。 控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围..

2020-09-14 17:10:06 918

转载 Tbox在整车CAN网络的位置与作用

智能车载娱乐系统的5个基本特征:基本来说, 当今的智能车机基本有以下几个特点: 基于智能操作系统: Android, Yunos, Linux等 基本都是虚拟按键, 较少用实体按键 具备外网连接功能, 即搭载了Tbox盒子 有配套的车联网手机App, 具有手机钥匙及远程车控等功能 具备控制: 空调, 数字液晶仪表, 360度环视摄像头, 其他车身设备(天窗, 车窗, 大灯)的应用程序. 以上涉及的第3点, 第4点都必须有Tbox设备才能实现...

2020-09-14 15:53:21 1306

转载 CAN网关/CAN信号转发机制/案例解析

其实准确的说不能叫CAN网关, 应该叫网关或者汽车网关, 因为网关不仅处理CAN网络, 还处理LIN网络.主要是为了配合本系列教程及区分于以太网网关, 所以才取名叫CAN网关.CAN网关的外形结构大概外形如上, 偶有差异, 大小如香烟烟盒, 有60,70多个PIN脚组成.每个接线pin脚都有严格的定义, 严格定义了要接can总线或者开关设备等...从以上拓扑图可以看出:CAN网关除了10个can接线pin脚(5条双绞线/5条CAN总线),2...

2020-09-14 15:46:54 2490 1

转载 整车CAN网络基本结构

在了解can网络之前, 先了解1个问题: 什么是智能硬件与ECU ? 何为智能硬件, 就是包含智能控制单元的硬件,比如发动机, 发动机上有一块儿专门负责控制发动机进气量, 喷油量, 排气量的控制单元, 这块单元相当于发动机的大脑. 他具有信号发送, 信号接收, 参数存储等基本功能, 这个控制单元就是ECU. ECU(Electronic ControlUnit)电子控制单元,是汽车专用微机控制器, 一个ECU一般负责1个或多个智能硬件设备...

2020-09-14 15:37:24 6954 2

CANonebyeight.zip

请用Candance打开,使用串口与上位机通信,能够同时接入8个CAN接口,十分方便快捷。同时板子比较小,选型十分常见,满足汽车产品CAN通信产品的测试研发。

2020-09-14

空空如也

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

TA关注的人

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