自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

转载 CAN报文 Intel 格式与Motorola 格式的区别

//////////如有侵权,敬请告知/////////////当一个信号的数据长度不超过 1 个字节(8 位)时,Intel 与 Motorola 两种格式的 编码结果没有什么不同,完全一样。当信号的数据长度超过 1 个字节(8 位)时,两者的编码结果出现 了明显的不同  1.    信号的高位,即最能表达信号特性的因子,比如:车速信号 500km

2016-08-23 13:15:08 13061 1

原创 诊断数据与应用层数据不一致时的映射方法(Remapping)

诊断数据与应用层数据不一致时的映射方法(Remapping)1,简介:该名称及以下实现仅是一个例子,主要目的是学习该映射方法;2,重映射(remapping)的机制:将一个enum排序的声明以一定的顺序排列后,将其通过一个相应长度的数组映射成一一对应的关系;enum如下:typedef enum{SW_NO0 = 0,SW_NO1 = 1,SW_NO2 =

2016-08-12 17:34:57 633

原创 平台化代码包含头文件说明

平台化代码中关于头文件包含使用说明:1,平台化代码需要考虑将”#pragma code section“部分放在头文件中包含及修改该#pragma部分代码,其中该头文件需要重复被包含,故此头文件前不能添加类似如下#ifndef _MEMMAP_H_#define _MEMMAP_H_...#endif 头文件防止重复包含的预计了,否则会出现第一次使用该文件后,在后边其他

2016-08-12 17:21:06 1320 1

原创 单片机开发中关键问题点

关于单片机开发,需要咨询FAE的关键问题如下:1,Clock、PLL(最大锁频时间及锁频失败后有无寄存器标志或中断入口)以及WTD的设置和使用;        2,中断的管理及使用,中断向量表的重定向(Bootloader);        3,地址线的位数(8位,16为,32位,64位)及地址范围,地址有无分页及如何寻址,是否区分长短寻址及特殊指令字;        4,RAM\

2016-08-12 16:35:27 455

原创 头文件包含顺序处理方法

关于enum声明的变量被其他文件(.h或.c)引用到时,由于头文件包含顺序引起的error的处理办法:  根据整个系统架构划分出应用层(APP),中间层(RTE),服务层(service)以及底层等层次,对于某一模块(如按键模块)包含Switch_APP、Switch_RTE、Switch_SERV以及IO底层,通常对于每个层中都有各自文件和callback文件(.h和.c)及cfg文件(.h

2016-07-08 18:54:11 2439

转载 TI蓝牙BLE 协议栈代码学习——OSAL(下)

接下来我们再看main()函数中另一个跟OSAL相关的函数——osal_start_system(),也位于OSAL.c中。void osal_start_system( void ){#if !defined ( ZBIT ) && !defined ( UBIT ) for(;;) // Forever Loop#endif { osal_run_system();

2015-09-06 15:58:59 2588 1

转载 TI蓝牙BLE 协议栈代码学习——OSAL(上)

TI的蓝牙4.0BLE协议栈为BLE-CC254x-1.4.0,即现在的版本是1.4版本的。可以从TI官方下载或从附件中下载安装,默认是安装在C盘中。因为上一篇博文提到进行空中固件升级,当时没有安装在C盘下,死活生成不了bin文件,改在C盘下生成了。所以,我个人建议,还是默认安装吧,也占不了多大空间。TI蓝牙4.0BLE协议栈的结构如下图所示:由控制器和主机两部分构成,分层

2015-09-06 15:54:25 3880 1

转载 在CodeWarrior中指定堆栈大小及堆栈指针

CodeWarrior自动生成的工程中堆栈指针的初始化机制打开CodeWarrior中的一个新建工程,在Start12.c文件中可以看到语句“INIT_SP_FROM_STARTUP_DESC()”,这是系统自动生成对堆栈指针的初始化语句。这条语句是个宏函数,具体为#define INIT_SP_FROM_STARTUP_DESC() __asm LDS #__SEG_END_SS

2015-08-12 15:37:41 1480

转载 9S12汇编指令【HCS12】

#取立即数立即数寻址:LDAA #$66直接寻址    LDAA $55扩展寻址    LDX  $4567累加器变址寻址  LDAB A,X ;将X+A作为地址的内存字节加在到累加器B加载指令:LDAA $55;将$0055内存单元的数据加载到累加器A中   LDAB $55;将$0055内存单元的数据加载到累加器B中            LDD  #$40

2015-08-12 15:26:34 4839

转载 常量指针和指针常量的区别详解

在C/C++中关键字const用来定义一个只读的变量或者对象,有如下优点    (1)便于类型检查,如函数的函数 fun(const int a) a的值不允许变,这样便于保护实参。    (2)功能类似与宏定义,方便参数的修改和调整。如 const int max = 100;    (3)节省空间,如果再定义a = max,b=max。。。就不用在为max分配空间了,而用宏定义的话

2015-08-03 11:33:54 443

转载 飞思卡尔 HCS12(x) memory map解说之3 .

了解XS128的MEMORY map和core,对充分榨取他的现有资源,合理分配RAM很有帮助。上次讨论到cpu12内核的DG系列单片机,基本上该涉及的东西都有所提及。包括:1 MEMORY map的原因,为什么要搞这个概念出来。2 MEMORY map包含的内容,有那三点...3 一些相关的概念性的东西。如果不明白,看看前面几篇文章就会明白一些的。

2015-06-11 16:25:05 878

转载 飞思卡尔 HCS12(x) memory map解说之2 .

接着上次的说吧。首先问一个问题:中断函数为什么要加:#pragma CODE_SEG __NEAR_SEG NON_BANKED 这个声明?这个声明是干什么用的?这要还是要从FLASH分页和非分页的区别说起。         下面详细说一说,FLASH里非分页和分页的使用。 要明白一点,分页是不可见的,要用的时候PPAGE参与寻址。     1

2015-06-11 16:23:36 1158

转载 飞思卡尔 HCS12(x) memory map解说(1) .

对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系。因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度。并且,对于DG128 XS128这样的MCU,默认的memory分配方式已经够用了。从这个意义上讲,搞清楚memory map似乎不必要。       但是,你有没有RAM不够用的情况?有没有想定义变量到FLASH ROM的情况?有

2015-06-11 16:22:29 837

转载 C语言运算符优先级--详细列表

优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名

2015-01-28 11:30:07 371

转载 stm32 keil MDK在线调试报错 Error: Flash download failed-"Cortex-M3"

一  目的装好keil MDK 想用 在线调试二  背景:     开发环境  keil MDK 511三 准备:     1  keil MDK 安装文件夹\ARM\Segger里是否有三个动态连接表2 程序编译通过;    3 jlink驱动安装好;四 操作步骤:1、2、

2015-01-22 12:21:42 5280

原创 Freescale关于USB BDM MULTILINK调试器使用说明

一、USB BDM MULTILINK图片如下:(说明:正视图为从上往下看,LED灯点亮面为正面,绿灯在左侧,黄灯在右侧)二、相关引脚方向及定义说明如下图:

2015-01-20 13:48:27 5484

转载 codewarrior 警告C12056: SP debug info incorrect because of optimization or inline assembler

一、产生原因:Warning C12056是代码最优化时(common code optimization)堆栈指针不一致造成;二、解决办法:在菜单 -> Edit -> Standard Setting(或快捷键ALT+F7) -> Compiler for HC12 -> Options -> Main Optimize Target对话框选中,然后再选中optimize fo

2015-01-08 09:52:35 4623

原创 关于Codewarrior IDE 5.9.0版本中Warning L1016产生原因及解决办法(Freescale--MC9S12G128)

一、产生原因:关于告警L1016产生的原因是在创建新的工程时,需要将原有的工程中的文件加入此次创建的工程中,一种是通过在创建的过程中通过“ADD“操作将位于其他工程中的文件找到并直接点击”ADD“按钮将文件添加入正在创建的工程文件(如图1.1所示),另外一种是在工程创建完成后通过右击工程中左侧操作栏中的文件夹并点击”Add Files...“按钮,在弹出的对话框(如图1.2所示),去待添加的文

2015-01-07 20:10:28 3526

转载 采用曼码调制的非接触式IC卡译码软件设计

(注意,图3中的数据与曼码对应中我仔细看了下是有部分错误的,不过对它的时序分析是很正确的,在阅读中请注意 by jerkoh)目前,随着技术的发展和应用的需求,IC卡(又称智能卡)在人们的日常生活中已经得到了广泛应用。通常,IC卡可以分为接触式IC卡和非接触式IC卡两类。接触式IC卡是卡与读卡器直接物理接触进行数据交换,部分金属电路是裸露在外面的,如手机卡、公共IC电话号等。非接触式IC卡

2014-10-30 10:22:29 1495

原创 CRC的校验原理

一、基本原理    CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。二、几个基本概念1、帧

2014-10-20 13:32:21 632

转载 CRC8校验

CRC按照位直接计算,比较灵活可以修改生成多项式  unsigned char CFrameInput::GetCheckSum(unsigned char *crcData, int crcDataLen)  {  "white-space:pre">  unsigned char crcPoly = 0x07; // 生成多项式  "white-space:pre">  uns

2014-10-20 13:11:42 3212

转载 I2C总线之(3)----以C语言理解IIC

为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形:如下图所示的写操作的时序图: 读时序的理解同理。对于时序不理解的朋友请参考“I2C总线之(二)---时序”完整的程序如下: #include#define uchar unsigned char#define uint unsigned int#defi

2014-09-22 09:46:20 1119

转载 I2C总线之(1)----概述

概述:I²C 是Inter-Integrated Circuit的缩写,发音为"eye-squared cee" or "eye-two-cee" , 它是一种两线接口。I²C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿

2014-09-22 09:43:25 375

转载 I2C总线之(2)----时序

一、协议 1.空闲状态  I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 2.起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。停止信号:当SCL为高期间,SDA由低

2014-09-22 09:43:22 645

转载 STM32输入捕获简介

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能。STM32的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等.

2014-07-31 20:50:47 790

转载 如何判断CPU是大端还是小端模式

在ARM体系中,每个字单元包含4个字节单元或者两个半字单元。在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endian和little-endian格式。在小端模式中,低位字节放在低地址,高位字节放在高地址;在大端模式中,低位字节放在高地址,高位字节放在低地址。在C语言中,不同于结构体,共用体(联合体)中的几种不同类型的变量存放在同一段内存单元中。

2014-06-10 10:26:54 647

转载 sizeof(struct )大小讨论

struct 结构大小和顺序、#progma pack参数有关系针对字节对齐,环境使用的gcc version 3.2.2编译器(32位x86平台)为例。char 长度为1个字节,short 长度为2个字节,int 长度为4个字节。struct 子项在内存中的按顺序排列,在没有#progma pack(n)参数的情况,各个子项的对齐系数为自己长度。

2014-06-09 23:03:41 407

转载 C语言数据类型占字节数

一、程序运行平台        不同的平台上对不同数据类型分配的字节数是不同的。        个人对平台的理解是CPU+OS+Compiler,是因为:        1、64位机器也可以装32位系统(x64装XP);        2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的);        3、即使是32位的编译器也可以弄出6

2014-06-09 22:48:30 488

转载 C/C++常见面试题

1. C中static有什么作用(1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和stat

2014-05-26 21:30:10 402

转载 解读HC08 S08 C语言的头文件

1.对位操作的定义以TSC寄存器的定义为例,在头文件中的定义如下:/*** TSC - TIM Status and Control Register TSC; 0x00000020 ***/typedef union {byte Byte;struct {byte PS0 :1; /* Prescaler Select Bit 0 */byte PS1 :1; /*

2014-04-03 16:04:40 1369

原创 asm内联汇编及HC08启动代码说明

AVR GCC has sei() for __enable_interrupts(), and cli() for __disable_interrupts(). Both of these macros are located in .CLI(clear interrupt)是将处理器标志寄存器的中断标志位清0,不允许中断。CLI经常与STI(SEI---set interrupt)成对使

2014-04-03 11:20:23 1899

转载 SPI及其时钟配置

今天知道了 SPI 时钟的设置 ,原来SPI 主设备 时钟极性的配置 应该和 从设备SDI的极性相反。怪不得以前做SPI 主设备程序的时候 ,把它设备设成mode 3(此时CPHA=1)就ok,设成mode 0(此时CPHA=0)就ng。因为我们的设备室mode0. 当初还以为 从设备的模式是跟着主设备走的呢!但看了一些材料,发现 这个模式 有些叫法不一致 ,有些不懂。一 .有的叫

2014-03-28 16:50:35 23420 2

转载 CAN总线网络的传输模式

CAN总线网络的传输模式根据触发条件的不同,在车身CAN网络中可分为事件型、周期性及混合型三种传输模式;1、事件型传输模式:      随着类型或数据的转变及时发送的消息。此类型消息的好处是极少占用总线资源,但是可能会存在漏发情况,这种消息类似于网络的中断,用于故障诊断的帧可以是事件型的。2、周期型传输模式:     以某个时间为周期,循环发送的消息类型。此类型的消息要求的时间精度

2014-03-18 17:58:28 8335 1

转载 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性

1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H   //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef  unsigned char      boolean;     /* Boolean value type. *

2014-03-12 17:37:24 754

转载 Sizeof与Strlen的区别与联系

Sizeof与Strlen的区别与联系一、sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof

2014-03-10 09:54:19 557

转载 内存分配

说明:1、指针p1未初始化,指向不确定,编译器分配为0xcccccccc;            2、指针p2初始化,(其中“hello”在内存存放地址为0x0042201c到0x00422021共6个字节,最后一个字节为结束符:\0)将字符串首地址(0x0042201c)存放指针p2中且此块内存初始化完成后为ROM(只读不可写入);           3、变量数组p3定义并初始化,(其

2014-03-07 16:59:43 470

转载 二维数组和指针

二维数组和指针二维数组和指针1、二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]等三个元素组成,而a[0]、a[1]、a[2]等每个元素又分别是由4个整

2014-03-06 11:33:06 488

转载 单片机位数

单片机位数指CPU处理的数据的宽度,参与运算的寄存器的数据长度? 如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。如果总线宽度与CPU一次处理的数据宽度不同:1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。2)总线宽度小于

2014-03-04 15:40:58 3055

转载 字符串处理函数gets()、puts()、strcmp()、strlen()、strcpy()、strcat()-C语言

字符串处理函数gets()、puts()、strcmp()、strlen()、strcpy()、strcat()-C语言  字符串标准函数的原型在头文件string.h中。1.输入字符串──gets()函数(1)调用方式:gets(字符数组)(2)函数功能:从标准输入设备(stdin)──键盘上,读取1个字符串(可以包含空格),并将其存储到字符数组中去。(3)使用说明

2014-02-15 11:27:27 3269 2

转载 单片机中晶振的作用

单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。-个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us.  MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机

2014-01-01 15:48:32 1784

Labview 中Process Monitor

Labview中的第一个小实验,使用Process Monitor控件实现温度、压力以及容积的变化

2014-04-02

comm/C++/VC6.0

VC6.0/C++下comm通信,很实用;

2013-04-07

udp通信协议

UDP通信 RECEIVE SEND 比较简单,适合初学者,大家共勉

2013-04-07

空空如也

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

TA关注的人

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