- 博客(190)
- 资源 (46)
- 收藏
- 关注
原创 &与-> 哪个优先级高
优先级 运算符 名称或含义 使用形式 结合方向 说明1 [] 数组下标 数组名[常量表达式] 左到右() 圆括号 (表达式)/函数名(形参表). 成员选择(对象) 对象.成员名-> 成员选择(指针) 对象指针->成员名2 - 负号运算符 -表达式 右到左 单目运算符(类型) 强制类型转换 (数据类型)表达式++ 自增运算符 ++变量名/变量名++ 单目运算符-- 自减运算符 --变量名/变量名-- 单目运算符* 取值运算符 *指针变量 单目运算符& 取地址运算符 &a
2022-01-11 17:04:07
6296
转载 定义一个函数指针类型
定义一个函数指针类型函数指针通常用来实现回调,其基本用法如下:1、定义函数指针类型// 定义一个原型为int Fun( int a );的函数指针typedef int (*PTRFUN) ( int aPara );2、函数指针变量的定义PTRFUN pFun; // pFun 为函数指针变量名int (*pFun2) ( int a ); // pFun2也是函数指针变量名3、函数指针作为函数的参数传递// 定义回调函数int CallBack( int...
2022-01-10 10:54:23
6498
转载 柔性数组介绍
柔性数组 柔性数组,简而言之就是一个在struct结构里的标识占位符(不占结构struct的空间),只能在堆上生成。 在结构体内,有一个数组,必须是结构体中的最后一个元素,而且有特定的形式[]或者[0],结构体中至少要有两个成员体变量。 实例: 此时的字符数...
2021-12-29 16:57:37
4519
原创 直接网络管理与间接网络管理的区别
OSEK直接网络管理分配了特定的网络管理CAN报文在网络上发送,而间接网络管理就是根据网络上其他控制器的应用报文发送周期来间接判断网络状态。很显然间接网络管理可以降低网络负载,提高网络实时性和安全性,通常间接网络管理也就是用在实时性要求较高的动力CAN网络上,其网络上的控制器用KL15硬线下电进行休眠,不需要复杂的策略。而直接网络管理常用在车身CAN这种实时性不高的网络上,由于这些控制器都是KL30常电供电,以备随时唤醒,因此采用直接网络管理这种令牌环策略的网络管理机制,使网络上的所有控制器同步进入
2021-06-19 08:40:05
9866
原创 旋转编码器工作原理
旋转编码器工作原理一、旋转编码器的原理和特点: 旋转编码器是集光机电技术于一体的速度位移传感器。当旋转编码器轴带动光栅盘旋转时,经发光元件发出的光被光栅盘狭缝切割成断续光线,并被接收元件接收产生初始信号。该信号经后继电路处理后,输出脉冲或代码信号。其特点是体积小,重量轻,品种多,功能全,频响高,分辨能力高,力矩小,耗能低,性能稳定,可靠使用寿命长等特点。1、增量式编码器 增量式编码器轴旋转时,有相应的相位输出。其旋转方向的判别和脉冲数量的增减,需借助后部的判...
2021-01-25 16:33:36
3394
2
转载 指针 + 1
指针 + 1指针 + 1 并不是指针代表的地址值 + 1.指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。至于真实的地址加了多少,要看原来指针指向的数据类型是什么。 char a = 'a'; char *p = &a; cout<<(void*)p<<" "<<(void*)(p+1)<<endl; //输出:0012FF33 0012FF34..
2020-11-17 15:03:42
3591
转载 结构体大小的计算
结构体大小的计算分类编程技术用最简单的方法,通俗易懂的方法计算结构体大小。结构体计算要遵循字节对齐原则。结构体默认的字节对齐一般满足三个准则:1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailin.
2020-11-17 15:02:34
328
转载 STVP提示The device is protected解决方法
STVP提示The device is protected解决方法 1 2 3 4 5 6 7 分步阅读STM8芯片写程序提示The device is protected,芯片烧写程序写保护的解决方法方法/步骤 拿到一块板子要给芯片更新程序,提示The device is protected,芯片写保护,不用担心,单击“确定” 然后选择面板上的第三项“option byte”进行设置 .
2020-07-14 09:17:28
6757
3
转载 STM32进入STOP模式并唤醒实验总结
STM32进入STOP模式并唤醒实验总结展开项目需求,需要实现设备低功耗功能,实现过程中遇到几个问题,以此记录总结。(stm32f103ret6)问题一:执行PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);后,程序继续执行,看到的现象像是没有进入休眠。调试步骤:1.关闭自己的时钟配置,调用启动函数中默认的SystemInit()2.关闭相关外设初始化,只开启串口一以追踪程序运行流程和一个IO中断以唤醒...
2020-06-02 14:06:00
5146
1
转载 STM32L0 进入STOP模式后串口中断方式唤醒
STM32L0 进入STOP模式后串口中断方式唤醒展开实现功能:单片机以一定的采样频率(如2Khz)进行采样,例如每分钟(60s)只采前30s,后30s休眠(定时休眠唤醒),等到下一分钟再自动wakeup,如此循环30分钟。30分钟之后,单片机进入休眠stop模式。用串口中断的方式将休眠的单片机唤醒。实现方法:1、定时休眠唤醒codeHAL_Delay(2000);//进行采样的时间HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);HAL
2020-06-01 18:09:28
2097
转载 NVIC_PriorityGroupConfig()说明
NVIC_PriorityGroupConfig()说明STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前.
2020-05-22 10:13:03
7435
转载 STM32 GPIO外部中断总结
STM32 GPIO外部中断总结一、STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是STM32的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位...
2020-05-20 17:30:30
2309
原创 RCC_APB1和RCC_APB2的区别
RCC_APB1和RCC_APB2的区别他们下面挂的外设不同,因为不同的外设需要的时钟不同。一个是高速时钟,一个是低速时钟具体看STM32的时钟介绍。APB2负责AD,I/O,串口1,高级定时器TIMAPB1负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN...
2020-05-20 16:37:56
3359
转载 STM32——PWM基本知识及配置过程
STM32——PWM基本知识及配置过程STM32——PWM基本知识及配置过程将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分和上一讲相同,时基时钟来源于内部默认时钟对此有疑问请参考 :定时器中断实验中 定时器时钟选择部分 和 定时器时钟来源部分什么是PWM脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩...
2020-05-18 17:28:04
4738
1
转载 【STM32】STM32端口复用和重映射(AFIO辅助功能时钟)
【STM32】STM32端口复用和重映射(AFIO辅助功能时钟)STM32F1xx官方资料:《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)端口复用功能端口复用的定义STM32有许多的内置外设(如串口、ADC、DCA等等),这些外设的外部引脚都是和GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫复用。详细的可以参考《STM32F103ZET6数据手册》p30的内容,表格的倒数第二栏就.
2020-05-18 17:20:51
1509
转载 STM32F103使用内部晶振的配置及64M主频异常的解决方法
STM32F103使用内部晶振的配置及64M主频异常的解决方法为了节省空间与成本,将STM32F103芯片外接晶振去除,使用内部HSI时钟,配置方法如下:voidRCC_Configuration(void) { /*EnablePrefetchBuffer*/ FLASH->ACR|=FLASH_ACR_PRFTBE; /*Flash2waitstate*/ FLASH->ACR&=(uint32_t)...
2020-05-15 11:29:55
4064
原创 IAR 6.3中intrinsics.h与core_cm3.h 中的兼容错误解决方法
IAR 6.3中intrinsics.h与core_cm3.h 中的兼容错误解决方法解决办法1:用IAR6.3打开IAR6.0 的工程,编译的时候出现提示错误:extern uint32_t __get_PSP(void); 已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义extern uint32_t __get_MSP(void);已经在C:\Program Files\I.
2020-05-14 09:39:04
907
原创 解释下const引用形参?
所谓的const的含义, 就是该变量为"常数", 不应该也不会去修改它.void fun(const int ival){ival = 3; // 编译错误, 无法修改一个const对象.}void fun(const int& ival){ // 引用参数ival = 3; // 编译错误, 无法修改一个const对象.}也就是说, 只要对象的声明中带有const标识, 任...
2020-04-15 09:46:09
857
转载 回调函数的理解
回调函数的理解前言: 刚开始用C语言听说过回调函数,但没有仔细去理解,随着工作的慢慢积累,逐步的用到了回调函数,本人认为,“回调函数”的理解对于很多人是一个槛,要想跨过,就得理解清楚,还得会用。这里就用本人的方式讲解一下回调函数如何理解。第一步:通俗的解释“回调函数”一、回调就是一种利用函数指针进行函数调用的过程。二、你到一个商店买东西,刚好你要的东西没有...
2020-03-28 13:51:10
377
原创 mos管h桥电机驱动电路与设计原理图-KIA
一、mos管H桥电路图1中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是由于它的外形酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(留意:图1及随后的两个图都只是表示图,而不是完好的电路图,其中三极管的驱动电路没有画出来)。如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必需导通对角线上的一对三极管。依据不同三极管对的导通状况,...
2019-12-20 11:31:12
11573
1
原创 数组指针和指针数组
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二...
2019-12-13 14:23:30
426
原创 数组的地址
&a,*a,a,a[0]——都表示的是数组第0行第0个元素的地址;*a[0]——这个特殊,表示第0行第0个元素的地址的地址;a[2],&a[2]——都表示第2行第0个元素的地址;&a[2][2]——表示第2行第2个元素的地址;详见图片,我已经把数组中主要元素的地址和值都打印出来了,数组中对应的每个元素的地址写出来了,对照的找下对应元素的位置,应该能理解&am...
2019-12-05 09:23:50
1164
原创 车载空调三态压力开关
什么是三态压力开关,起什么作用什么是三态压力开关,起什么作用所谓的三态压力开关就是指汽车空调压力开关(传感器)。空调压力开关是空调控制系统的一个控制元件,因为分别在高、低、中管路压力下起作用,因而称为“三态压力开关”。三态压力开关是一个保护开关,包括一个高低压开关再加一个中压开关。三态压力开关安装在高压管路上,其作用如下:(1)低压开关当空调系统有泄漏或制冷剂少时,为了保护压缩机...
2019-11-07 10:20:06
2470
转载 LIN总线总结
画点时间看了一些关于LIN总线基础的内容,把其中的关键点提取了出来,在这里分享给大家。在这里你可能要问“不都有CAN总线了吗?这个LIN总线又是从哪里来的?”其实理由很简单,就是CAN总线太贵啦!处处都用CAN总线的话,那整车的总线架构成本将会变得很高!在一些比如车身电子配件的地方(如车窗、后视镜、大灯、车锁等),我们不需要报文像CAN总线上传输的那样“高速”!各大厂商一拍脑门就研究了这个LIN总...
2019-10-12 09:49:17
1971
原创 MCU 字节长度
在32位系统中Longint=int=32bitshortint=16bit在16位系统中shortint=int=16bitlongint=32bit
2019-09-25 10:27:48
654
转载 FTM的PWM、输入捕获、正交解码
FTM是一个神奇的模块,他能输出PWM,能输入捕获,能输出比较还能正交解码。英文全称是FlexTimer Module,你可以理解为高级定时器模块、易用定时器模块等等。不仅仅在Kinetis 32位处理器中,FTM是个常用的模块,在飞思卡尔的8位处理器中,他也是个常用的模块,只不过名字叫TPM。FTM会用了,飞思卡尔的其他单片机的FTM、TPM你就都会用了。在OSKinetis固件库中,我们可以用...
2019-09-24 08:29:04
5898
原创 单片机编程中此句 什么意思!!
单片机编程中此句 PWME |= (1<<0)什么意思!!这句话是指将PWME寄存器的最低位(第0bit)置成1,我猜这句话可能是使能PWM0通道。(1<<x)是指将1左移x位,(1<<0)是将1左移0位即还是1,(1<<5)=0b100000=0x20另外,单片机中寄存器中给某一bit置上或清零常用下述方式:由于0|1=1 1|1=...
2019-09-08 17:27:48
880
2
原创 函数名前加static的一些解释
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。定义静态函数的好处:<1>其他文件中可以定义相同名字的函数,不会发生冲突<2>静态函数不能被其他文件所用。...
2019-09-05 10:49:59
904
转载 c语言volatile关键字在单片机中的作用
c语言volatile关键字在单片机中的作用volatile 的意思是“易失的,易改变的”。这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化。通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx。当CPU把其值放到ebx中后就不会再关心对应内存中的值。若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并不会随之更新。为了...
2019-08-30 15:09:11
1741
转载 CAN报文格式
CAN报文格式CAN协议的报文传输过程中有:数据帧、远程帧、错误帧、过载帧和帧间隔。 1.数据帧:用于发送节点向接收节点传送数据的帧。 2.远程帧:用于接收节点向具有相同ID的发送节点传送数据的帧。 3.错误帧:用于当检测出错误时向其他节点通知错误的帧。 4.过载帧:用于接收节点通知其尚未做好准备的帧。 ...
2019-08-27 17:04:01
3918
转载 [S32] S32K144功耗管理与系统模式控制
[S32]S32K144功耗管理与系统模式控制 [复制链接] 赵彦安 该用户从未签到 3 主题 4 帖子 0 金豆 注册会员 积分 50 最后登录 2018-...
2019-08-27 09:22:29
7821
1
原创 #if defined和#if !defined(c语言的宏定义)
#if defined和#if !defined(c语言的宏定义)因为对于一个大程序而言,我们可能要定义很多常量( 不管是放在源文件还是头文件 ),那么我们有时考虑定义某个常量时,我们就必须返回检查原来此常量是否定义,但这样做很麻烦.if defined宏正是为这种情况提供了解决方案.举个例子,如下:#define ....#define .... .... ......
2019-08-26 08:54:52
30263
1
转载 Motorola S-records(S19)文件格式详解
Motorola S-records(S19)文件格式详解以下对Motorola S-records的清晰完整的描述是多年前从一个Unix系统的用户手册中找到的。Motorola S-records名字SREC — S-record文件和记录格式,S-record file and record format描述每个S-record文件都包含多行按特殊格式组织的ASC...
2019-08-23 08:57:20
1735
转载 C语言——enum枚举类型用法解析
C语言——enum枚举类型用法解析在实际的编程应用中,有的变量只有几种可能的取值,譬如说一个星期的七种可能,性别的两种可能等等。C语言为这种类型的变量的定义提供了enum关键字。要使用枚举类型的变量,首先需要先定义一个枚举类型名,然后再声明该变量是枚举类型的例1:enum WEEKDAY{ \\该语句定义了一个枚举类型 MONDAY = 1, TUSED...
2019-08-22 15:02:19
1040
原创 C语言常见命名规则
常见命名规则骆驼(Camel)命名法近年来越来越流行,在许多新的函数库和Java这样的平台下使用得当相多。骆驼命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。例如:printEmployeePaychecks(),函数名中每一个逻辑断点都有一个大写字母来标记。帕斯卡(Pascal)命名法与骆驼命...
2019-08-22 14:58:00
4540
转载 CAN网关及CAN信号转发机制
CAN网关 及 CAN信号转发机制CAN网关上节课, 我们讲到了CAN网关,其实准确的说不能叫CAN网关, 应该叫网关或者汽车网关, 因为网关不仅处理CAN网络, 还处理LIN网络.主要是为了配合本系列教程及区分于以太网网关, 所以才取名叫CAN网关.CAN网关的外形结构大概外形如上, 偶有差异, 大小如香烟烟盒, 有60,70多个PIN脚组...
2019-08-21 17:23:25
2122
转载 使用CANoe搭建CAN网关
使用CANoe搭建CAN网关Vector公司的CANoe是一款强大的总线仿真工具,通过CANoe搭建出来的总线模型可以模拟真实的汽车总线,并且通过CAPL语言可以对节点上的ECU进行编程。这样不仅能够模拟总线上的报文发送,还可以模拟ECU的内部逻辑,理论上可以完全模拟出CAN总线系统。下面介绍一下如何通过CANoe搭建一个CAN网关。假设最简单的情况,CAN网络具有3...
2019-08-21 17:22:22
3096
转载 飞思卡尔 S19格式文件详解(S-record) 分享
飞思卡尔 S19格式文件详解(S-record) 分享S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。 网上有关S-record格式文件的资料很少,经过我的收集和实验,整理出以下文档,方便大家对...
2019-08-20 14:48:03
1246
原创 结构体与共同体(联合体)的妙用
结构体与共同体(联合体)的妙用学习过C语言后,大家都了解了结构体与共同体。两者之间的区别是:共同体:使几个不同类型的变量共占一段内存(相互覆盖)。所占内存长度是各最长的成员占的内存长度。结构体:把不同类型的数据组合成一个整体。所占内存长度是各成员占的内存长度的总和。在C2000官方样例中,对寄存器的定义就大量使用了这两种数据结构来完成对寄存器总体或者对寄存器每一位的操作...
2019-08-20 11:37:31
3962
转载 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结
再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结1. 前言bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来,这个IP核基本未变,可见这个IP核的设计是相当成熟的。本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容,就可以很方便地适用于所有STM32系列中包含bxCAN外设的型号。有关bxCAN的过滤器部分的内容在参考手册中往往看...
2019-08-20 10:14:00
452
ICCAVR中文使用说明
2012-04-13
MEGA16 下写的 SHT11程序 完整版
2012-04-13
windows.h 头文件
2012-04-14
verilog黄金参考指南中文版
2012-04-13
op07中文资料 pdf
2012-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人