judy的博客

单片机执行指令的过程

judy的头像

单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

STM32串口收数据的几种不同方式

judy的头像

本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机,具体下面详谈。

实例一:

void USART1_IRQHandler(u8 GetData)
{
u8 BackData;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志.
GetData = UART1_GetByte(BackData); //也行GetData=USART1->DR;
USART1_SendByte(GetData); //发送数据
GPIO_SetBits(GPIOE, GPIO_Pin_8 ); //LED闪烁,接收成功发送完成
delay(1000);
GPIO_ResetBits(GPIOE, GPIO_Pin_8 );
}
}

这是最基本的,将数据接收完成后又发送出去,接收和发送在中断函数里执行,main函数里无其他要处理的。

LDO的五大作用,最后一个很多人想不到

judy的头像

LDO【low drop output】低压差线性稳压器,是硬件人员熟悉的不能再熟悉的一种器件了,这是一种线性的降压型的电源管理芯片。

它的基本电路如图1所示,该电路由串联调整管VT、取样电阻R1和R2、比较放大器A组成。

LDO的五大作用,最后一个很多人想不到

取样电压加在比较器A的同相输入端,与加在反相输入端的基准电压Uref相比较,两者的差值经放大器A放大后,控制串联调整管的压降,从而稳定输出电压。当输出电压Uout降低时,基准电压与取样电压的差值增加,比较放大器输出的驱动电流增加,串联调整管压降减小,从而使输出电压升高。相反,若输出电压Uout超过所需要的设定值,比较放大器输出的前驱动电流减小,从而使输出电压降低。供电过程中,输出电压校正连续进行,调整时间只受比较放大器和输出晶体管回路反应速度的限制。

应当说明,实际的线性稳压器还应当具有许多其它的功能,比如负载短路保护、过压关断、过热关断、反接保护等,而且串联调整管也可以采用MOSFET。

C语言预处理指令总结

judy的头像

预处理指令是以#号开头的代码行,#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

下面是本章涉及到的部分预处理指令:

单片机C语言易错知识点

judy的头像

嵌入式操作系统(Embedded Operation System,EOS)是指用于嵌入式系统的操作系统。嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。嵌入式操作系统是负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能,是一种用途广泛的系统软件。

嵌入式LINUX

嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星的支持。

电子装置不可或缺的关键零组件:內存

judy的头像

所有使用者对「內存」这个名词可是一点都不陌生,因为所有的电子产品都必须用到內存,且通常用到不只一种內存,说它是一种「战略物资」也不为过!不过对于內存种类、规格与形式,很多人容易搞混,例如:身为「执行」程序(数据)的DRAM,以及「储存」程序与数据的FlashROM就是一例,这篇专辑将由浅入深为大家介绍各种新型內存的结构与运作模式。

內存的分类

电的內存是指电写电读的內存,主要分为两大类,如图一所示:

挥发性內存(VolatileMemory,VM):电源开启时数据存在,电源关闭则数据立刻流失(数据挥发掉),例如:SRAM、DRAM、SDRAM、DDR-SDRAM等。

非挥发性內存(Non-VolatileMemory,NVM):电源开启时数据存在,电源关闭数据仍然可以保留,例如:ROM、PROM、EPROM、EEPROM、FlashROM、FRAM、MRAM、RRAM、PCRAM等。

单片机开发过程中硬件调试技巧

judy的头像

在单片机开发过程中,从硬件设计到软件设计几乎是开发者针对本系统特点亲自完成的。这样虽然可以降低系统成本,提高系统的适应性,但是每个系统的调试占去了总开发时间的2/3,可见调试的工作量比较大。单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。本文结合作者在单片机开发过程中体会,讨论硬件调试的技巧。

当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段,调试大体分为以下几步。

1 硬件静态的调试

1.1排除逻辑故障

这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。

1.2排除元器件失效

PCB贴片元器件手工焊接技巧及要点

judy的头像

内容简介

以下内容都是我最近焊贴片所收获的知识和技巧,现在无私分享给你(如果我写成这样你都能看懂的话~(~ ̄▽ ̄)~)。但我想你应该知道,焊接本来就不是三两下就能学会的,还是要多练,熟能生巧。

我真的会焊贴片么?

最近公司新产品出炉,一直在帮忙焊板子,才发现自己的焊接水平有待提高。一直自认为焊接技术“还可以”,但事实证明,能焊一点插件就“自我感觉良好”的我实在是太年轻了,在洞洞板焊直插这种随便找个电子专业的童鞋都完全没压力好吧。

在PCB上焊贴片元器件才是真正考验技术的工作,遇到密密麻麻的芯片引脚和比沙子还小的电容电阻,虚焊、短路等问题频频出现且极难发现,对手法以及耐心的要求都非常高。但更重要的是一些小技巧和要注意的细节,有些要点是我之前一直忽略的。

关于烙铁

一个可调温的焊台似乎是必不可少的,不然怎么知道烫到你的烙铁是多少度的呢哈哈~~~有了焊台,刀头烙铁也成了标配(反正我用尖头烙铁焊贴片很蛋疼),再加上焊锡、海绵、助焊剂,焊接大家族算是齐人了。

关于烙铁的使用要注意几点:

单片机程序死机跑飞原因分析

judy的头像

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

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

2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4. 无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5. 看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

单片机中去耦电容的应用

judy的头像

去耦电容用在放大电路中不需要交流的地方,用来消除自激,使放大器稳定工作。
去耦:去除在器件切换时从高频器件进入到配电网络中的RF能量。去耦电容还可以为器件提供局部化的DC电压源,它在减少跨板浪涌电流方面特别有用。

首先来看图 3-1,这是 USB 接口和供电电路。

单片机中去耦电容的应用
图 3-1 USB 接口和供电电路

左边这张图,过了保险丝以后,接了一个 470uF 的电容 C16,右边这张图,经过开关后,接了一个 100uF 的电容 C19,并且并联了一个 0.1uF 的电容 C10。其中 C16 和 C19 起到的作用是一样的,C10 的作用和他们两个不一样,我们先来介绍这 2 个大一点的电容。

容值比较大的电容,理论上可以理解成水缸或者水池子,同时,大家可以直接把电流理解成水流,其实大自然万物的原理都是类似的。

页面

订阅 RSS - judy的博客