FatFs 0.09b 常用函数(三)

FatFs 0.09b 常用函数(三)

f_mkdir,f_unlink,f_rename(1)f_mkdir 创建一个目录FRESULT f_mkdir (     const XCHAR* DirName);参数:    DirName'\0&#...
FatFs 0.09b 常用函数(二)

FatFs 0.09b 常用函数(二)

f_read,f_write,f_lseek,f_truncate(1)f_read 从一个文件读取数据FRESULT f_read (     FIL* FileObject,    void* Buffer,&...
FatFs 0.09b 常用函数(一)

FatFs 0.09b 常用函数(一)

f_mount,f_mkfs,f_open,f_close(1)f_mount 注册/注销一个工作区FRESULT f_mount(     BYTE  Drive,    FATFS*  FileSyste...
FatFs 0.09b 函数列表

FatFs 0.09b 函数列表

FatFs提供了如下函数,并描述了函数的具体功能。f_mount 注册/注销一个工作区 f_open 打开/创建一个文件 f_close 关闭一个文件 f_read 读取文件 f_write 写文件 f_lseek 移动读/写指针,扩展文件大小&n...
FatFs 0.09b 功能配置

FatFs 0.09b 功能配置

FatFS是一个为小型嵌入式系统设计的通用FAT(FileAllocationTable)文件系统模块。FatFs的编写遵循ANSIC,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR,8051,PIC,ARM,Z80,68K等等,而不需要做任何修改。官网http://elm-chan.org...
三极管 NPN与PNP的区分

三极管 NPN与PNP的区分

按照流行的电路图画法,阳上阴下(正在上,负在下),如上图便于理解。图中的箭头可以理解为电流方向。PNP:用 E→B 的电流(IB)控制 E→C 的电流(IC),E极电位最高, 即VE > VB > VC 所以,当B为低电平时,EC导通。NPN:用 B→E 的电流(IB)控制 C→E 的电流(IC),C极电位最高,即VC > VB > VE所以...
Protel99se 原理图库设计要点

Protel99se 原理图库设计要点

在新建里选择SchematicLibraryDocument就可以创建原理图库文件。打开新建的文件后,在Tools菜单里,可以新建、删除、重命名原件。Pin的Name没有电器性能,只是为了方便设计者,可以留空。但是Number是有电器特性的,不能重复,其数值要和封装库里对应的原件的Pin编号对应相同。网格和自动吸附设置:右键或者Options菜单里打开Docum...
STM32 ST-LINK Utility 设置禁止读Flash

STM32 ST-LINK Utility 设置禁止读Flash

这里以STM32ST-LINKUtilityv4.5.0版本为例。硬件连接好后,先点击连接按钮,即图中插头按钮。连接成功后点击菜单Target->OptionBytes..打开对应窗口,也可以使用快捷键Ctrl+B将ReadOutProtection设置为Enabled后,点击Apply完成。如果要解锁禁读,一样的步骤,只要将ReadOu...
Protel99se 设计流程

Protel99se 设计流程

以下是初学者的基本步骤,假设所有库自己制作。第一步:创建原理图库,并制作元器件。第二步:创建封装库,并制作器件封装。注意引脚编号和第一步的原理图元器件引脚编号要对应相同。第三步:创建原理图文件,绘制原理图,设置每个元器件的封装,封装的名称就是第二步封装原件的名称。第三步:电器规格检查(ERC),创建Netlist第四步:创建PCB文件,导入Netlist,绘制PCB...
STM32通过ISP下载程序的流程及指令

STM32通过ISP下载程序的流程及指令

一.介绍ST官方提供了Flashloaderdemonstrator用于ISP下载程序。但是必须依托桌面操作系统,实际生产中不够方便,离线下载器可以解决这个问题。这里所介绍的就是开发离线下载器所必须了解的知识。ST官方提供了一份学习笔记,编号是AN3155.pdf。详细介绍了ISP下载相关协...
HEX文件解析

HEX文件解析

HEX是一种常见的烧录文件格式,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。行格式如下表(两个字符代表一个字节):起始码字节1字节2字节3字节4字节5~n字节(n+1):本行数据长度起始地址高位起始地址低位数据类型数据校验码起始码:起始码恒为一个冒号字节1:表示本行数据的长度字节2、3:表示本行数据的起始地址字节4:表...
Modbus-RTU协议入门

Modbus-RTU协议入门

一.简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。在中国,Modbus已经成为国家标准GB/T19582-2008。ModBus网络只有一个主机,所有通信都由他发出。ModBus支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都...
多线程 - 释放线程

多线程 - 释放线程

线程的释放方式有两种:一种是线程在运行完成后自动释放,一种是手动释放。无论哪种都应在线程执行完释放,即线程停止后释放。要说明的是停止不是释放。线程的停止要也有两种方式:一种是运行完自动停止,一种是因为execute方法中做了循环,需要设置标志位来停止。1.自动停止自动释放这种情况时,execute方法中没有循环,执行完即停止,停止后就自动释放。在execute开始时...
Delphi多线程 - 通过线程类TThread新建线程

Delphi多线程 - 通过线程类TThread新建线程

Delphi中有一个线程类TThread,是用来实现多线程编程的,这里主要举例如何实现及应用,不做深究。以下例程是在Delphi2010环境运行。一. 建立工程及线程代码框架1.新建一个工程。2.点击菜单File->New->Other弹出NewItems对话框:3.选择DelphiProjects->Delph...
多线程 - 通过Synchronize更新VCL界面

多线程 - 通过Synchronize更新VCL界面

由于Delphi的VCL非常方便,导致开发人员不像在VC下更新窗口界面和工作线程的关系上分的那么清楚,给系统稳定带来潜在的危险。最好的方法是永远让更新窗口界面的工作仅由主线程完成,工作线程仅仅做后台的一些工作,当工作线程的结果需要反馈到界面上来的时候,应该使用各种同步对象(临界区、互斥量)等来进行同步,然后让主线程更新窗口界面。如果通过API建立线程,可以采用Send...
Delphi多线程 - 临界区

Delphi多线程 - 临界区

在多线程同步方法中,临界区相对简单,也是效率最高的办法。临界区就是将一段代码放入这个区域,一次只允许一个线程执行这段代码。线程执行到临界区时就独占了,其他线程如果要访问这段代码,一定要等前一个访问的线程结束才行。1.在interface区定义TRTLCriticalSection型全局变量var    MyCS:TRTL...
Protel99se 环境设置

Protel99se 环境设置

字体设置:解决对话窗口文字显示不全的问题。点击左上角菜单栏向下箭头->Preferences ->取消勾选“UseClientSystemFontForAllDialogs”自动保存:解决意外死机断电问题。点击左上角菜单栏向下箭头->Preferences ->点击“Auto-SaveSetting...
多线程 - 进程与线程

多线程 - 进程与线程

1.进程:磁盘上的一个可执行文件在被启动后,就是一个进程。如果想手动创建一个进程应调用CreateProcess。Windows加载一个进程时,它只是打开一个内存映象文件,然后把可执行文件的内容或DLL加载进内存。进程是非活跃的,它们什么也不做,真正活动起作用的是线程。一个进程就是一个加载过的程序,它不是正在运行,也不是正在执行。当要访问内存时,才将真正的物理内存映...
程序启动和退出时的执行顺序

程序启动和退出时的执行顺序

总原则:1.initialization的执行顺序首先看彼此单元之间是否有调用关系,被调用的先执行,然后再看工程文件的uses的顺序。2.OnCreate的执行顺序由工程单元中的如下类似代码决定:    Application.CreateForm(TForm1, Form1);  &n...
Unit单元文件构成

Unit单元文件构成

Delphi的Unit构成unit Unit1//单元名称,必须有interface //接口区,必须有implementation //实现区,必须有initialization //初始化,程序启动时先顺序执行,可以没有finalization //结束化,程序结束时运行,只有当In...