自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (6)
  • 问答 (2)
  • 收藏
  • 关注

转载 uCOS-II中的任务切换机制

【@.1 函数周期与死循环】 一般函数的生命周期很简单,从开始调用函数起,直到函数返回,即结束。这样一来就完成了这个函数的使命,它也就不再需要了。对于一般的函数就是这样,但是回过头想想,对于一个系统、OS、或者工业控制中的一个控制器重的系统个,函数返回是很轻易很随便的就能返回吗?返回就意味着函数结束,死亡,若是想系统这样一个很大的函数,它的返回就意味着系统结束。因此,对于系

2017-06-30 11:23:45 574

转载 uC/OS-II学习笔记—时间管理

时间管理的内容在代码os_time.c中,包含操作系统时间的设置及获取,对任务的延时,任务按分秒延时,取消任务的延时共5个系统调用。时间管理的最主要功能就是对任务进行延时。时间管理中最重要的数据结构就是全局变量OSTime,OSTime的值就是操作系统的时间,它的定义在uC/OS-II的头文件ucos_ii.h中,代码如下所示: 这里首先要知道关键字volatile的含义。volati

2017-06-30 10:28:48 928

转载 ucos II 任务延时函数

Ucos II  任务延时函数   编写过单片机程序的都知道,延时函数是经常被用到的。   在ucos II 里,系统也提供了这样的延时函数。一个是大众版的OSTimeDly(),一个是精致版的OSTimeDlyHMSM()。 萝卜青菜,各有所爱,随你怎么选。   这两者的区别是,OSTimeDly()的延时时间是以节拍数来衡量的,OSTimeDlyHMSM()的延时时间则

2017-06-30 09:40:39 696

转载 单片机系统时钟与实时时钟有什么区别?为什么有的系统时钟晶振使用12M,而实时时钟使用32.768K

1、大多数单片机都只有系统时钟一个。就是CPU的各节拍工作时序的驱动源了。这个频率一般为几MHz。速度比较快,其目的无非是让单片机快点干活。那为啥不是GHz数量呢,这个是集成电路工艺决定的。根据工艺反推出某款单片机的理想工作频率,往往也是最佳工作频率了。系统在这个频率下工作又快(已达最佳极限)又稳定。最好地体现了计算机的高速运算能力。2、实时时钟,是单片机计时的时钟或独立的可被单片机访问的时钟。它

2017-06-30 01:06:43 9924

转载 钟爱STM32的理由:强大的片上内存调试功能,不改写芯片内原有程序

STM32一般认为使用诸如一键下载功能来下载程序到片上FLASH很方便,其实我个人认为也不是很方便。尤其是对于一个程序需要很多小的修补,而改写一行甚至几个字节的情况下。重复的一键下载不仅损伤了MCU的片上FLASH寿命,而且也只能看到修改的结果,无法对程序内的各种设置监控。为什么钟爱STM32,就是因为STM32对比其它单片机(如51和AVR之类),有JLINK何STLINK这

2017-06-30 00:48:56 3241

转载 stm32调试-- 获取内存数据

之前做stm32开发的时候为了获取stm32芯片内部数据想进了各种方法。一开始是用串口发送数据,后来系统更新到win10后串口驱动不兼容,于是就找到了另外一种调试方式。  我是在keil中进行stm32开发,stm32程序通过keil编译器编译,然后通过JLink下载到芯片上。在Debug模式中可以直接查看stm32的运行内存,如图1-1所示 图1-1 stm32中变量

2017-06-30 00:38:17 3205

转载 C#中如何使用正则表达式

正则表达式按照指定的规则来匹配字符或字符串。'.' ' \b' ' \d'等等被称为是正则表达式中的元字符,比如说点元字符用来匹配换行符以外的其他任意字符,\b元字符用来匹配单词,\s元字符用来匹配空格等等。正则表达式转换:Show you the code:(\S)1 string input = "I is Lily.";2

2017-06-30 00:00:33 287

转载 STM32F103--BKP

备注:         这是自己基于STM32的BKP备份寄存器的学习。BKP功能:  1  系统从待机模式或系统或电源复位时BKP备份寄存器不会被复位,保护程序运行数据。                     2  BKP还可以管理嵌入检测和RTC校准功能,用于复杂的的条件下嵌入保护。                    备注1:复位后BKP和RTC访问被禁止备份域被

2017-06-29 10:36:48 1736

转载 关于STM32软件复位代码编写 (转)

对于STM32来说软件复位有两种方式: 1)采用官方自带的软件库   在官方软件库的stm32f10x_nvic.c 文件里 直接提供了 系统复位的函数 /******************************************************************************** Function Name  : NVIC_Gener

2017-06-29 10:34:16 1693

转载 透传模式(透明传输SeriaNet)详解

1.简介        SerialNet模式将本地异步串口通信转换成基于TCP/UDP协议的网络通信。其主要目是将串行通信的简单设备实现在网络上的通信,而这些设备不需要做任何改变,为此,SerialNet模式定义了一系列相关的操作参数,这些参数的定义实现了网络连接所需要的属性。当DTU工作在SerialNet模式时,在设备串口与网络之间他的工作方式就象路由器的路由过程。     

2017-06-28 15:44:43 16530

转载 解决source insight 的相对路径问题

为解决source insight由于据对路径问题导致的拷贝路径变化工程重建问题!s1:给自己的source insight 工程名字新建个目录eg :si S2:在SI先建个工程 和往常一样S3:给个相对路径S4: 工程重建好了!建好的工程可以随便copy了!!

2017-06-27 21:20:04 2304 2

转载 code warrior 及BDM

本次编写调试程序使用的是CodeWarrior编译软件平台,充分利用其强大的在线调试模式,为程序调试过程提供了很大的便利其使用界面如图 CodeWarrior的功能强大,可用于大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。利用CodeWar

2017-06-27 10:50:26 2918

转载 为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么实际作用的啊 '中断函数置于非分页区内'这是什么意思啊,非分页区是什么啊

是这样的,飞思卡尔单片机.拿s12系列的来说,NON_BANKED一般位于0xc000-0xffff区域,而这个区域是16位单片机可以直接寻址的区域,而__NEAR_SEG告诉编译器函数放在固定页中,只有固定页中的函数才能访问其他页的数据,同时CODE_SEG定义了一个代码段.所以,你可以这样理解:中断函数存放在CPU可以直接寻址的范围内,这样就可以节省中断函数的访问时间,方便调用中断函数(因

2017-06-27 10:22:51 1965

转载 STM32 大小端模式 与 堆栈及其增长方向分析

在开源电子中看到一篇文章讲的是栈增长和大端/小端问题。学C语言的时候,我们知道堆栈的区别:1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。(3)全局区(静态区)(static):全

2017-06-26 16:47:50 661

转载 STM32堆栈

1.堆和栈大小 定义大小在startup_stm32f2xx.sStack_Size      EQU     0x00000400                AREA    STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem       SPACE   Stack_Size__initial_sp; Heap Configura

2017-06-26 16:34:39 290

转载 详解μC/OS-II如何检测任务堆栈实际使用情况——即如何设置ucosii任务堆栈大小

不少屌丝同学都有类似经历吧,在使用ucosii创建任务时,关于任务堆栈大小设为多大合适搞的不清不楚,郁闷之下就随便整个数,比如就1024吧,呵呵,反正也没见得出问题,那就不多想了。        我想大多数同学都是这样做的吧。这样只是因为在一般情况下,1024确实已经足够大了,堆栈溢出的可能性很小而已。那么,如果你任务实际使用率只有很小的百分之几,一旦被你知道了,你会痛心不?我想你不痛心,μC

2017-06-26 16:14:25 15185 3

转载 串口通信校验方式(even,odd,space,mark)UART数据波形分析

1. even 每个字节传送整个过程中bit为1的个数是偶数个(校验位调整个数)2. odd 每个字节穿送整个过程中bit为1的个数是奇数个(校验位调整个数)3. noparity没有校验位4. space 校验位总为05. mark 校验位总为1

2017-06-26 15:13:27 19996

转载 C语言#error的作用

#error 使您可以从代码中的特定位置生成错误;就是说执行到这一句时自动产生错误,例如:#if DEBUG#error DEBUG is defined // 进入这里将产生错误#endif

2017-06-26 13:56:00 10800

转载 C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef

有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。   (一)条件编译方法   条件编译是通过预编译指令来实现的,主要方法有:

2017-06-26 13:54:01 263

转载 面试题【1】:i++是否原子操作?并解释为什么?

不是原子操作。理由:1.i++分为三个阶段:内存到寄存器寄存器自增写回内存这三个阶段中间都可以被中断分离开. 2.++i首先要看编译器是怎么编译的,某些编译器比如VC在非优化版本中会编译为以下汇编代码:__asm{        moveax,  dword ptr[i]        inc eax        mov dwordptr[i],

2017-06-23 15:38:18 1243

转载 CAN总线错误帧

前两天,帮一个客户调试CAN总线,他的板子发数,USBCAN接收,但是总是调试不成。我接上示波器,量一下CANH与CANL之间的波形,发现他板子不连接USBCAN接口卡时,波形是正确的;可是一旦连接上USBCAN以后,波形就成了以下这个样子:本文引用地址:http://www.eepw.com.cn/article/201612/330355.htm就是刚发了第一个显性位之后,

2017-06-23 13:47:43 2778

转载 SylixOS CAN总线报文浅析

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

2017-06-23 13:26:15 547

转载 STM32的can现场总线实验心得

最近在搞stm32实验板的can现场总线实验,之前只是搞过STC51的串口通信,相比之下,发觉can总线都挺复杂的。开始时,知道自己是新手,只知道can总线跟串行通信,485通信,I2C通信一样都是用来传输数据通信的,对其工作原理一窍不通,还是从基础开始看书看资料,先了解它的基本原理吧。原来can总线有以下特点:主要特点支持CAN协议2.0A和2.0B主动模式波特率

2017-06-23 13:08:16 1639

转载 导线截面积和电流的关系

一.  导线型号规格B系列归类属于布电线,所以开头用B,电压:300/500V。(布局在墙上不动的线)V就是PVC——聚氯乙烯塑料L就是铝芯的代码R就是(软)的意思,要做到软,就是增加导体根数 BV  —— 铜芯聚氯乙烯绝缘电线BLV —— 铝芯聚氯乙烯绝缘电线BVR —— 铜芯聚氯乙烯绝缘软电线以上电线结构:导体+绝缘拿2.5mm2为例:BV的内芯线是1根

2017-06-23 11:49:52 9685

转载 linux内核和windows内核的一些区别

LINUX 和 WINDOWS 内核的区别[声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]关于LINUX和WINDOWS的口水站已经很多了。本文企图从技术角度来比较下2个主流操作系统的异同。偏重于内核部分。一、动机:我最早是 WINDOWS 阵

2017-06-14 12:48:22 7712

转载 C/C++-技巧-宏

一、宏基础宏在c/c++中扮演者比较重要的角色,虽然难以阅读和调试的缺点让宏的使用饱受诟病,但是在一些特殊的情况下,使用宏会带来极大的方便,甚至可以实现一些用其他方式无法实现的功能。在c/c++程序编译的过程中,编译器对宏的处理是在预编译阶段进行的,处理方式的核心思想是:简单替换,编译器并不会对宏本身和宏的参数进行任何类型、语法上的检查,这也是导致宏不易阅读、不易调试的原因,也可能产生一些

2017-06-13 14:38:00 407

转载 vs中检测内存泄漏的方法

使用vs的内存检测有以下几种方法。在debug模式下以F5运行:方法一:[html] view plain copy#define CRTDBG_MAP_ALLOC    #include stdlib.h>    #include crtdbg.h>    //在入口函数中包含 _CrtDumpMemoryLeaks();   

2017-06-12 15:37:24 239

转载 MFC内存泄露与检测

内存泄露的含义是:拿走了一块“堆”内存块,在某检查点处,发现没有归还这个内存块。如果是: 地址A = malloc(N); 因为没有调用free(地址A),所以内存泄露了。如果是: 地址B = new 类型T; 因为没有调用delete 地址B,所以内存泄露了。如果是:从用户的内存池中取一个内存块,没有调用相应的归还给内存池的操作,也认为是“内存泄露”。从哪里拿了一个东西,要归还到那个地方去。例如

2017-06-12 11:41:49 288

转载 LINK : warning LNK4098: 默认库“MSVCRTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

报错内容:1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string,class std::allocator >::~basic_string<char,struct std::char_traits,class std::allocator >(void)" (??1?$basi

2017-06-12 10:41:04 1813

转载 vs2008下的MFC程序,怎么检测内存泄露

假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。我们用VS生成了一个MFC的对话框的程序,发现他可以自动的检测内存泄露.不用我们做任何特殊的操作. 仔细观察,发现在每个CPP文件中,都有下面的代码:#ifdef _DEBUG#define new DEBUG_NEW#endifDEBUG_NEW 这个宏定义在afx.h文件中,就是它帮助我们定位内

2017-06-12 10:16:43 407

转载 Lua使用心得

这几天研究了一下lua,主要关注的是lua和vc之间的整合,把代码都写好放在VC宿主程序里,然后在lua里调用宿主程序的这些代码(或者叫接口、组件,随便你怎么叫),希望能用脚本来控制主程序的行为。这实际上也是一种把业务分离,用脚本控制的架构,可能有些人把这种脚本叫做业务引擎,工作流等。 为什么选择lua?因为它是一个能和C/C++结合得很紧的脚本语言,而我们的程序是用VC++ 写的;另

2017-06-10 19:31:15 341

转载 MFC 检测内存泄漏的方法

C/C++的一个重要特色是可以动态的分配和释放内存,我们的口号是new和delete成对出现。可是,总会由于各种各样的原因,有内存泄露的情况发生,借助visual C++ 集成开发环境,可以方便的检查内存泄露信息,具体方法如下:1、在stdafx.h头文件中添加两行代码//内存泄露检测#define _CRTDBG_MAP_ALLO#include 2、在程序退

2017-06-10 18:57:03 3140

转载 C++编程经验-返回局部变量的讨论

返回局部变量没问题 如果返回局部变量有问题,函数的意义还有吗? 全局变量还用返回吗? 返回指向局部变量的指针才有问题, 函数退栈之后,局部变量消失, 指针将指向未知区域,所以出现问题。返回局部变量的引用也是绝对不可以的。 引用只是变量的一个别名,变量本体都不存在了,引用当然也没有任何意义。 还有,如果是堆空间,可以返回,即在函数中用new申请的空间,是可以返

2017-06-10 18:28:29 587

转载 #pragma pack(push,1) & #pragma pack(pop)

1 引子      在程序中,有的时候我们定义结构体的时候,要用#pragma pack(push,1) & #pragma pack(pop)类似代码将结构体包起来。一般形式如下:#pragma pack(push,1);struct A{ } ;#pragma pack(pop);这么做有什么目的呢? 注:下列内容来自网络。2 #pragma pac

2017-06-08 09:15:31 718

转载 在C#中单击右键添加引用时弹出错误提示对话框

你这个不是托管dll,只有托管dll才可以通过右键-引用,如果是非托管dll(比如用c++,delphi等编写的dll),需要用 [DllImport]引用

2017-06-07 17:02:22 1373

转载 #ifdef xxx_GLOBALS 的作用

以下是如何定义全局变量。众所周知,全局变量应该是得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必须在 .C 和 .H 文件中定义。这种重复的定义很容易导致错误。Error[e46]: Undefined external "SerBfr" referred in ZLG522S D:\mcu\430prj\zlg522s\Debug\Obj\ZLG522S.r

2017-06-06 14:31:51 831

转载 MFC多线程的创建,包括工作线程和用户界面线程

MFC多线程的创建1.MFC多线程简介MFC对多线程进行了一层简单的封装,在Visual C++中每个线程都是从CWinThread类继承而来的。每一个应用程序的执行都有一个主线程,这个主线程也是从CWinThread类继承而来的。可以利用CWinThread对象创建应用程序执行的其它线程。MFC用CWinThread对象来表示所有线程。利用MFC可以创建两种线程,分别称之为工作者线程

2017-06-01 14:51:05 1680

转载 MFC 主界面函数中线程等待避免界面卡死的处理方法

实用场景:例如在MFC主界面某个Button Click事件中起一个线程去做处理一些事情,在起的线程运行完毕后,接着跑Click起线程后的代码,已达到按顺序执行,保证时许正确的目的。问题:通常处理一个线程等待用 WaitForSingleObject,这个放在主界面线程成中会造成主界面“卡死”,其原因是它将主界面的消息循环给阻塞了,即等不到线程结束的时候界面上的消息循环无法

2017-06-01 13:35:42 7527 1

UDS ISO 14229 最全协议-全部协议 国际标准2013版

良心贡献 良心贡献 质量保证 只需2个积分,希望好评! ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS I

2022-07-23

XCP协议层标准ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0

ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0.pdf

2018-04-03

基于stm32的GPRS网络与CAN网络通信设计

硬件部分主要由两台PC机、stm32f103VET6微处理器及其外围器件、GPRS模块等组成,并且由网络调试助手、串口调试助手、新花生壳等软件工具协助。软件部分主要利用MDK4.72进行程序设计。主要实现CAN网络与GPRS网络信息数据的相互传输,并充分利用单片机的数据处理能力,实时监控两个网络的通信状态并在其驱动的彩色液晶屏上进行显示。考虑到数据传输的效率、可靠性、实时性以及微处理器的资源利用率,使用了stm32f103VET6微处理器的串口DMA接收和DMA发送功能,这对来自于GPRS网络和CAN网络的大数据大有裨益。另外,由于经济因素,本文设计使用了一台PC机和一个CAN转换器模拟CAN网络里的一台主机,使用另一台PC机模拟GPRS网络里的服务器。

2015-10-25

msp430、51单片机驱动24L01的C程序

msp430、51单片机驱动24L01的c程序

2014-12-25

信号与系统教学

该实验平台系长期从事一线教学老师及一批学习优良的学生合作开发,有助于学习信号与系统这么课程

2013-09-30

信号与系统虚拟实验平台

信号与系统虚拟实验平台,专注于在实验中学习信号与系统

2013-09-26

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

TA关注的人

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