跳转到主要内容

博客

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

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

C语言预处理指令总结

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

单片机C语言易错知识点

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

<font size="4" color="blue">嵌入式LINUX</font>

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

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

<strong>內存的分类</strong>

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

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

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

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

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

<strong>1 硬件静态的调试</strong>

<strong>1.1排除逻辑故障</strong>

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

内容简介

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

我真的会焊贴片么?

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

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

关于烙铁

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

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

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

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

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

单片机中去耦电容的应用

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

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

STM32F7与STM32F4复位序列之比较

<strong>前言</strong>

初次接触到STM32F7,可能会有个疑惑,为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处开始执行吗?如果是,那这似乎看起来是冲突的。实际上,STM32F7是基于Cortex-M7内核,而Cortex-M7和Cortex-M3/M4的复位序列有些不一样。本文中,将针对这个问题做详细讲解。

<strong>STM32F4的复位序列</strong>

单片机内部结构原理分析

<font color="blue"><strong>一、单片机内部结构分析</strong></font>

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

写出高效优美的单片机C语言代码

1、单片机晶振不起振原因分析
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1) PCB板布线错误;
(2) 单片机质量有问题;
(3) 晶振质量有问题;
(4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题;
(5) PCB板受潮,导致阻抗失配而不能起振;
(6) 晶振电路的走线过长;
(7) 晶振两脚之间有走线;
(8) 外围电路的影响。
解决方案,建议按如下方法逐个排除故障:
(1) 排除电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。
(2) 排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。

单片机C语言几种内存泄露总结

日常项目中碰到的内存泄露无非有以下几种:

(1) 堆内存泄漏(Heap leak)。堆内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应的 free或者delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使用,就会产生Heap Leak. 这是最常见的内存泄露。

(2)系统资源泄露(Resource Leak).主要指程序使用系统分配的资源比如 Bitmap,handle ,SOCKET等没有使用相应的函数释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定

STM8S单片机入门2(关机模式开关机按钮)

开关机功能是使用电池供电系统的最基本功能。如果使用机械式开关(2段拨动开关,自锁开关等)等直接接通和切断电源,不说机械部件的可靠性,至少自动关机(一般在长时间不操作、电池电量低时需要自动关机)功能就比较难实现。所以电池供电系统一般采用按钮开关,用一个按钮配合软件实现按一次开机、再按一次关机的功能及自动关机的功能。

这部分内容就讲述如何在上实现一键式的开关机功能。开关机功能要使用单片机的一个引脚(PD4)作为输入端,连接到按钮,接收按纽按下产生的电信号,然后再使用另一个引脚(PD3)作为输出端去驱动由三极管8550构成的一个电子开关实现对系统电源的控制。而STM8S单片机本身就直接接在电池上,利用单片机的停机模式,将单片机本身的电流降低到μA级,对电池的消耗就可以忽略不计了。

<strong>1、电路设计</strong>

对STM32系统时钟和分频的一点理解

系统时钟和分频
首先来手册里的一段话。
三种不同的时钟源可被用来驱动系统时钟 (SYSCLK)
HSI振荡器时钟
HSE振荡器时钟
PLL时钟
一般用的是PLL时钟,后面有证据。
我们可以通过库函数获取各时钟值
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
在我的系统里,把时钟值打印信息如下:
SYSCLK:0x44aa200 //72000000, 72MHz
HCLK:0x44aa200 //72000000, 72MHz
PCLK1:0x2255100 //36000000, 36MHz

STM8S单片机入门(前言)

STM8S单片机是一款广泛使用的8位低功耗单片机,具备系统成本低、功能强大等特点。功能强大也带来了学习入门相对较难的问题。本入门教程面向无任何单片机基础的人,从开发环境的搭建开始,通过详细讲解一个典型单片机应用系统最基本设计和实现过程,帮助大家快速入门。

单片机应用系统的形态很多,但基本模式类似。以智能硬件的应用为例,各种智能硬件区别大多是输入电路(各种传感器及外部信号输入)和输出电路(控制电路、动作电路)的不同,基础部分单片机、电池和充电管理、无线数据模块都是类似的。

所以本入门教程选取包含开关机电路、锂电池充电及电源管理、蓝牙无线接口的一个单片机应用实例,通过讲解这些功能的实现过程,把 STM8S单片机的GPIO、中断程序、AD转换、串口通讯、停机模式的使用等知识点串接起来,让大家对STM8S单片机有个整体的认识和掌握。

STM8S单片机入门1(开发环境搭建)

STM8S单片机开发环境由三大部分组成,包括PC机上的开发软件(集成开发软件、驱动程序等)、调试&编程器ST-LINK、目标单片机电路板。如下图所示:

<center><img width="500" src="http://mcu.eetrend.com/files/2017-09/博客/100007899-26008-31.jpg&quot; alt="STM8S单片机入门1(开发环境搭建)"></center>

1、PC机上开发软件

stm32内存管理总结

<strong>一、内存管理简介</strong>

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存管理的实现方法有很多种,他们其实最终都是要实现 2 个函数:malloc 和 free;malloc 函数用于内存申请,free 函数用于内存释放。本章,我们介绍一种比较简单的办法来实现:分块式内存管下面我们介绍一下该方法的实现原理,如图

msp430 学习经验总结6个方面

1.MSP430开发环境建立
1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。
2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET
3.建立一个工程,选择"option"选项,设置
a、选择器件,在"General"项的"Target"标签选择目标器件
b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试
信息用于仿真。

PLC与这7种设备的连接方式

导语:PLC常见的输入设备有按钮、行程开关、接近开关、转换开关、拨码器、各种传感器等,输出设备有继电器、接触器、电磁阀等。正确地连接输入和输出电路,是保证PLC安全可靠工作的前提。

<strong>1、PLC与主令电器类设备的连接</strong>

图1是与按钮、行程开关、转换开关等主令电器类输入设备的接线示意图。图中的PLC为直流汇点式输入,即所有输入点共用一个公共端COM,同时COM端内带有DC24V电源。若是分组式输入,也可参照图下图的方法进行分组连接。

stm32独立看门狗和窗口看门狗的区别

1)独立看门狗没有中断,窗口看门狗有中断
2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制
3)独立看门狗只有下限,窗口看门狗又下限和上限
4)独立看门狗是12位递减的。窗口看门狗是7位递减的
5)独立看门狗是用的内部的大约40KHZ RC振荡器,窗口看门狗是用的系统时钟APB1ENR

以上是我总结的

接下来我们介绍一下独立看门狗和窗口看门狗,这里我们就不讲解程序了,很简单的,配置一下寄存器就可以使用了。