1 Star 196 Fork 1

Alancheng86 / ClassA20

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
GP.pas 1.78 KB
一键复制 编辑 原始数据 按行查看 历史
tjCFeng 提交于 2014-12-06 10:42 . Update GP.pas
(*
说明:全志A20的General Purpose底层操作封装类。单例。
当RTC电池电压大于1.0V时可以保存数据
作者:tjCFeng
邮箱:tjCFeng@163.com
更新日期:2014.12.06
*)
unit GP;
{$mode objfpc}{$H+}
interface
uses SysUtils, A20;
type
TChannel =
(GP_0, GP_1, GP_2, GP_3, GP_4, GP_5, GP_6, GP_7,
GP_8, GP_9, GP_10, GP_11, GP_12, GP_13, GP_14, GP_15);
TGP = class
private
class var FInstance: TGP;
class function GetInstance: TGP; static;
public
class procedure Release;
class property Instance: TGP read GetInstance;
private
FGP_BASE: ^LongWord;
constructor Create;
destructor Destroy; override;
protected
FTMR_GP: TGROUP16_REG;
public
procedure SetGP(Channel: TChannel; Value: LongWord);
function GetGP(Channel: TChannel): LongWord;
public
property TMR_GP: TGROUP16_REG read FTMR_GP;
end;
implementation
const
GP_BASE = $01C20D20;
class function TGP.GetInstance: TGP;
begin
if FInstance = nil then FInstance:= TGP.Create;
Result:= FInstance;
end;
class procedure TGP.Release;
begin
FreeAndNil(FInstance);
end;
constructor TGP.Create;
var Base: LongWord; I: Byte;
begin
inherited Create;
FGP_BASE:= TA20.Instance.GetMMap(GP_BASE);
Base:= LongWord(FGP_BASE) + TA20.Instance.BaseOffset(GP_BASE);
for I:= 0 to 15 do FTMR_GP[I]:= Pointer(Base + I * $04);
end;
destructor TGP.Destroy;
begin
TA20.Instance.FreeMMap(FGP_BASE);
inherited Destroy;
end;
procedure TGP.SetGP(Channel: TChannel; Value: LongWord);
begin
FTMR_GP[Ord(Channel)]^:= Value;
end;
function TGP.GetGP(Channel: TChannel): LongWord;
begin
Result:= FTMR_GP[Ord(Channel)]^;
end;
finalization
TGP.Instance.Release;
end.
Pascal
1
https://gitee.com/Alancheng86/ClassA20.git
git@gitee.com:Alancheng86/ClassA20.git
Alancheng86
ClassA20
ClassA20
master

搜索帮助