judy的博客

51单片机如何轻松转型到ARM设计?

judy的头像

我以前一直用的是51,不过一直是C51,对C语言已经有10多年的经验,汇编用的很少,后来因为项目需要转到了ARM。一开始对ARM什么都不懂,看了本《ARM体系结构与编程》也是云里雾里的,但是也许是因为无知者无畏吧,我直接就在MDK中建立一个工程,添加了自带的启动文件,然后做了个main函数,里面一个死循环没有操作任何硬件,居然跑起来了。然后以此为基础,慢慢的开始控制GPIO和串口通信,当时突然发现,我的项目不就是搞搞这些吗?其他的什么运行模式、什么链接寄存器、什么PC寄存器关我鸟事,我只要能控制外设就行了。至于它是怎么实现的,那是编译器和链接器的事情。

现在回头想想开发ARM还是很简单的,特别是使用MDK的话,会C也就能做一些简单的开发了。不要被那些稀奇古怪的东西给搞糊涂了。边开发边学习,项目做深了,那些东西自然就懂了。我们公司来了新人,我一般就叫他做个简单的东西,比如按键、串口等,做完也就差不多会了。

罗嗦这么久说几点建议吧:

1.ARM的汇编没必要去精通的,能够大概看懂就行了。我一般在调试的时候才需要看看。如果一个速度要求苛刻到需要你使用汇编的话,我认为可能你更需要的是转变思路,修改算法。比如使用查表代替计算等。我做了5年ARM开发,完成了n个项目,至今没写过一句汇编。

单片机的拉电流和灌电流

judy的头像

单片机的拉电流和灌电流都是对单片机的输出而言的,是单片机驱动能力的具体体现。

灌电流

单片机的拉电流和灌电流

如上图所示,当单片机输出低电平时,允许电路向单片机引脚内灌入电流,这个电流就叫做“灌电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“灌电流负载”。

拉电流

单片机的拉电流和灌电流

如上图所示,当单片机输出高电平时,允许电路从单片机的引脚拉出电流,这个电流就叫做“拉电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“拉电流负载”。

单片机编程应用技巧问答

judy的头像

1. C语言编程和汇编语言在开发单片机编程各有哪些优缺点?

答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

C语言编程是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不 够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆 栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。

如果对单片机C语言编程有兴趣,HOLTEK的单片机就有提供C编译器

2. C编程或汇编语言可以用于单片机编程,C++能吗?

答:在单片机编程开发中,主要是汇编和C,没有用C++的。

三个步骤学好单片机编程设计

judy的头像

作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。

学习单片机的动机不外乎有四种:一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。

第一步:基础理论知识学习

MOS管炸不炸?原因就在这里

judy的头像

电源工程师最怕什么?炸机!用着用着就坏了,莫名其妙MOS管就炸了,真是又怕又恨,可到底是哪里出问题了呢?这一切都和SOA相关。

我们知道开关电源中MOSFET、 IGBT是最核心也是最容易烧坏的器件。开关器件长期工作于高电压大电流状态,承受着很大的功耗,一但过压或过流就会导致功耗大增,晶圆结温急剧上升,如果散热不及时,就会导致器件损坏,甚至可能会伴随爆炸,非常危险。这里就衍生一个概念,安全工作区。

一、什么是安全工作区?

安全工作区:SOA(Safe operating area)是由一系列(电压,电流)坐标点形成的一个二维区域,开关器件正常工作时的电压和电流都不会超过该区域。简单的讲,只要器件工作在SOA区域内就是安全的,超过这个区域就存在危险。

二、SOA具体如何应用和测试呢?

单片机C语言编程规范

judy的头像

1.基本规则

格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编程规范-标识符命名。

2.标识符命名

2.1命名基本原则

(1)命名清晰明了,有明确含义,使用完整单词或约定俗成的缩写。通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。即"见名知意"。

(2)命名风格要自始至终保持一致。

(3)命名中若使用特殊约定或缩写,要有注释说明。

(4)同一软件产品内模块之间接口部分的标识符名称之前加上模块标识。

2.2宏和常量命名

宏和常量用全部大写字母来命名,词与词之间用下划线分隔。对程序中用到的数字均应用有意义的枚举或宏来代替。

2.3变量命名

变量名用小写字母命名,每个词的第一个字母大写。类型前缀(u8\s8 etc.)全局变量另加前缀g_。

如果出现单片机系统不正常工作怎么办

judy的头像

最近终于有充足的时间来学习计算机组成原理与单片机原理,简单的说说自己对这两门课程的感受。

1. 首先说计算机的两大分支:通用型计算机,单片机。是两个不同的发展方向。我们知道计算机有五大部件组成,即 运算器 控制器 存储器 输入设备 输入设备。

单片机是集成在一个IC芯片上的,IC芯片上集成了运算器 控制器 以及IO接口,相当与一个计算机系统了。而通用计算机是分模块的,比如内存条,CPU,显卡,这些设备是通过系统总线连接成一个计算机系统。所以可以看出,单片机是微计算机系统,正是因为小巧,价格也便宜,很适合应用于嵌入式系统。当然单片机的功能就没有通用型计算机的功能那么强大了。

2. 再说一下计算机组成原理,计算机组成原理是介绍计算机的基本原理,不涉及具体机型,比如说intel 8086,不以具体机型进行介绍与讲解。而微机原理与接口技术这门课程,是以8086为讲解对象的。当然介绍计算机原理的时候也可以以某一具体机型为例进行介绍,但是如果太针对某一机型,就无法体现计算机的原理的基础性了。

3. 单片机原理,我看过的一些单片机原理书籍,都是以MCS-51单片机讲解的,因为51内核的单片机是非常简单易学的,而且用途十分广泛。arm也是单片机的一种,是一种32的微控制器。而51单片机是8位的微控制器。

解析单片机与CPU的区别

judy的头像

多人都认为,单机片和CPU不是属于两种不同的东西吗?他们怎么可以拿来比较,其实有专业人士就知道单机片和CPU 的关系可以说是十分的密切。本文来分享一下,他们到底隐藏着什么秘密。

什么是单片机,相信很多人都还不知道。也不知道单片机的作用是什么。单片机简称为单片微控制器(Microcontroler),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机,因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。Intel的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

大家都知道我们的电脑主要是由中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。安装在一个被称之为主板的印刷线路板上,就是我们个人的计算机了。

有多少人不知道单片机内部结构原理?

judy的头像

一、单片机内部结构分析

我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。

二、几个基本概念

1、数的本质和物理现象

页面

订阅 RSS - judy的博客