跳转到主要内容
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名
国际橡塑展报名
C语言经典算法100例(三)

<strong>1、河内之塔</strong>

说明河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。

μC/OS-III中的高效时钟节拍管理机制

<strong>引言</strong>

在嵌入式实时操作系统(RTOS)中,任务可通过调用延时函数(比如μC/OS中的OSTimeDly() 函数)将自己延时挂起一段时间。任务在延时的过程中会释放CPU使用权,也就是说,延时的任务不占用宝贵的CPU资源。延时的任务由时钟节拍服务跟踪管理。当任务延时结束并准备运行时,时钟节拍服务会使该任务恢复运行。时钟节拍服务定期运行,其运行由周期的时钟节拍中断触发,而时钟节拍中断可由硬件定时器产生。

在μC/OS—III中,时钟节拍服务是在时钟节拍中断服务程序中完成的,每次时钟节拍服务都会遍历整个任务链表,递减所有延时任务的延时计数器。当任务数目较多时,时钟节拍服务处理时间很长,会造成中断延迟时间和任务延迟时间都变得很长,影响系统的实时性。

【下载】编写优质嵌入式C程序

摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性、对未定义行为的处理以及一些高级应用;在此基础上,介绍了防御性编程的概念,提出了编程过程中就应该防范于未然的多种措施;提出了测试对编写优质嵌入式程序的重要作用以及常用测试方法;最后,本文试图以更高的层次看待编程,讨论一些通用的编程思想。

聊聊ARM下的函数栈

这篇文章简要说说函数是怎么传入参数的,我们都知道,当一个函数调用使用少量参数(ARM上是少于等于4个)时,参数是通过寄存器进行传值(ARM上是通过r0,r1,r2,r3),而当参数多于4个时,会将多出的参数压入栈中进行传递(其实在函数调用过程中也会把r0,r1,r2,r3传递的参数压入栈),具体是什么实现的呢,我们看看。

嵌入式时代已经来临,你还在等什么?

最近经常有用人单位打来电话,问有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员。现在每年毕业的大学生那么多,还招不到合适的软件开发人员吗?他说,毕业大学生虽然多,但大部分都能力不够,不能达到他们的工作的要求。

单片机程序总跑飞?小技巧帮你忙

经常接触单片机的朋友,肯定遇到过单片机程序跑飞的问题。由于程序较为复杂,所以一旦出现跑飞的现象就比较难以查找错误出现的地方,网络上对错误的解释和解决方法也比较五花八门,并不方便查找。小编特意帮大家整理了关于单片机程序跑飞死机的原因,大家快来看看能不能在其中找到自己想要答案吧。

单片机程序死机,跑飞了可以从以下几个方面查找原因:

<strong>1、意外中断。</strong>

是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。

<strong>2、中断变量处理不妥。</strong>

浅谈单片机以太网接入方案

单片机的种类繁多,从低端到高端,有以51单片机为代表的8位单片机和以ARM为代表的32位单片机,不同档次的单片机实现网络接口的方法不同。对于像ARM等高端处理器一般都可以运行嵌入式操作系统,例如嵌入式Linux。对于无操作系统要求的单片机如何实现网络接入,我下面将这些方案按TCP/IP协议栈的不同归结为两大类:第一类是传统的软件TCP/IP协议栈方案;第二类是最新的硬件TCP/IP协议栈方案。下面我就这两类方案的实现方式进行分析。

<strong>1、MAC+PHY方案</strong>

C语言经典算法100例(二)

11、判断某一年是否是闰年。

[cpp] view plain copy print?
//判断某一年份是否是闰年
int IsLeapYear(int year)
{
return (year % 400 == 0 || (year % 4 == 0) && (year % 100 != 0));
}

运行结果:

μCOS-II移植到ARM处理器上的几个要点

<strong>一、uCOS II在ARM处理器上移植过程中的中断处理</strong>
  
uCOS II是一个源码公开、可移植、可固化、可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写。总量约200行的汇编语言部分被压缩到最低限度,以便于移植到任何一种其它的CPU上。
  
uCOS II最多可支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore (信号量)、Mailbox (邮箱)、MessageQueue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,uCOS II公开所有的源代码。并可以免费获得,只对商业应用收取少量License费用。
  

五点保证MCU低功耗

低功耗是MCU的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。
  
平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。下边咱们仔细分析一下这其中的原因。
  
<strong>第一条:掐断外设命脉——关闭外设时钟</strong>
  

重大突破!5nm不是极限,美科学家实现1nm晶体管!

美国劳伦斯伯克力国家实验室 Lawrence Berkeley National Laboratory www.lbl.gov)(简称伯克利国家实验室)今天宣布实现全球最小的晶体管!该实验室利用二维材料技术用二硫化钼、碳纳米管和二氧化绝缘体锆实现了栅极长度1nm的晶体管。该成功公布在最新一期《科学》杂志上。

深入浅出解析IGBT的工作原理及作用

本文通过等效电路分析,通俗易懂的讲解IGBT的工作原理和作用,并精简的指出了IGBT的特点。可以说,IGBT是一个非通即断的开关,兼有MOSFET的高输入阻抗和GTR的低导通压降两方面的优点。
  
IGBT(绝缘栅双极型晶体管),是由BJT(双极型三极管)和MOS(绝缘栅型场效应管)组成的复合全控型电压驱动式功率半导体器件,兼有MOSFET的高输入阻抗和GTR的低导通压降两方面的优点。GTR饱和压降低,载流密度大,但驱动电流较大;MOSFET驱动功率很小,开关速度快,但导通压降大,载流密度小。
  
IGBT综合了以上两种器件的优点,驱动功率小而饱和压降低。非常适合应用于直流电压为600V及以上的变流系统如交流电机、变频器、开关电源、照明电路、牵引传动等领域。
  

智能家居将为MCU带来庞大市场需求

新一代年轻消费族群对于生活品质的需求逐渐提高,不仅小米要发展智能家居,中兴通讯也在于近日在北京揭晓智"智能家居"将成为市场主流,而智能家居的崛起也必然引爆MCU(Micro controller Unit,微控制器)的需求量迅速攀升,众多MCU厂商可望迎来庞大商机。

智能家居所需要的IC芯片与物联网主流芯片基本上是一致的,物联网的数据处理、加工、传输都离不开MCU,在物联网(IoT)发展趋势之下,节能、安全感测、3C产品、医疗及汽车电子应用等,均已成为MCU的热门应用领域。

MCU为未来每一个物联网设备的关键组件之一,也是数百亿个物联网终端节点的布建基础,负责智能控制、网路连结、无线传输、人机界面互动系统,举凡玩具、家电、汽车等都不难见其踪迹。

C语言经典算法100例(一)

C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的、更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础。

接下来我们先来看10道:

(1)输出9*9乘法口诀。

【视频】Proteus入门到精通17

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

这一套Proteus教学视频是由up主wangxinmingqq花时间录制的,内容很全,既适合初学者,又适合对proteus有一定基础的人。

电子工程师必备的知识精选

作为从事硬件设计工作的工程师,首先要有过硬的基本功,要能对有技术参数的电路原理图进行总体了解,能进行划分功能模块,找出信号流向,确定元件作用。

<strong>电路图</strong>

电路图是人们为了研究和工程的需要,用约定的符号绘制的一种表示电路结构的图形。通过电路图可以知道实际电路的情况。这样我们在分析电路时,就不必把实物翻来覆去地琢磨,而只要拿着一张图纸就可以了。在设计电路时,也可以从容地纸上或电脑上进行,确认完善后再进行实际安装,通过调试、改进,直至成功。我们更可以应用先进的计算机软件来进行电路的辅助设计,甚至进行虚拟的电路实验,大大提高工作效率。
  
要掌握分析常用电路的几种方法,熟悉每种方法适合的电路类型和分析步骤。

单片机Keil软件仿真与调试技巧

<strong>一、引言</strong>

单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措。实际上。各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧。对于排查这些程序错误问题可以起到举一反三、事半功倍的效果。软件调试是单片机技术人员必须掌握的重要基本技能。

下面以单片机常用开发软件Keil为例,通过一个项目任务实例来介绍单片机软件仿真与调试的方法。

<strong>二、Keil仿真与调试</strong>

点击运行软件Keil uVision2.其调试操作步骤大体可以分为5步:

<strong>1、创建工程</strong>

ARM编译中的RO、RW和ZI DATA区段

<strong>ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成</strong>

一个ARM程序包含3部分:RO段,RW段和ZI段

RO是程序中的指令和常量

RW是程序中的已初始化变量

ZI是程序中的未初始化的变量

由以上3点说明可以理解为:

RO就是readonly,

RW就是read/write,

ZI就是zero

<strong>ARM映像文件的组成</strong>

所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。

Image文件包含了RO和RW数据。

C++ 及标准库中的那些大坑,别踩了!

C++及标准库中,其实存在了一些大坑,你都知道怎么避免吗?

<strong>1、变量初始化</strong>

这是使用 C++11 codecvt 时遇到的一个坑,转换编码时,mbstate_t 这个中间状态变量,必须初始化为0,否则运行出错,即:

<center><img src="" alt=""></center>

这是第一个坑,并不算太坑,还比较容易调试和发现,也怪自己大意了。

经验:C++中的变量一定要初始化后再使用。

<strong>2、匿名 std::thread 对象</strong>

PCB电路板散热技巧

电子设备工作时产生的热量,使设备内部温度迅速上升,若不及时将该热量散发,设备会持续升温,器件就会因过热失效,电子设备的可靠性将下降。因此,对电路板进行散热处理十分重要。

<strong>一、印制电路板温升因素分析</strong>

引起印制板温升的直接原因是由于电路功耗器件的存在,电子器件均不同程度地存在功耗,发热强度随功耗的大小变化。

印制板中温升的2种现象:

(1)局部温升或大面积温升;

(2)短时温升或长时间温升。

在分析PCB热功耗时,一般从以下几个方面来分析。

1、电气功耗

(1)分析单位面积上的功耗;

(2)分析PCB电路板上功耗的分布。

2、印制板的结构

(1)印制板的尺寸;