正确理解C语言指针申明的含义

/*说明:*/

?

//文件名 : JudgeControlMode.h

?

# ifndef _JUDGECONTROLMODE_H_

# define _JUDGECONTROLMODE_H_

?

//------------------------------------宏定义--------------------------------------------------

/*

#define CHARGESOFTSTARTUPBOUND 4.5

#define CHARGEUPBOUND 5.5

#define DEADZONEUPBOUND 6.0

#define DISCHARGEUPBOUND 7.0

#define DISCHARGESOFTSTARTUPBOUND 8.0

?

#define OVERVOLTAGE 12.0

#define SAFECURRENT 60.0

#define OVERCURRENT 72.0

*/

#define CHARGEREF 5.0

#define CHARGE_DISCHARGE 5.5

#define DISCHARGEREF 10.0

?

#define OVERVOLTAGE 15.0

#define SAFECURRENT 20.0

#define OVERCURRENT 40.0

?

#define WORKMODE 0

#define LASTWORKMODE 0

?

#define READYSTARTMODE 0

#define CHARGESOFTSTARTMODE 1

#define CHARGEMODE 2

#define DISCHARGEMODE 3

#define DISCHARGESOFTSTARTMODE 4

#define OVERVOLTAGEMODE 5

#define SAFECURRENTMODE 6

#define OVERCURRENTMODE 7

?

#define CHARGESOFTSTOPMODE 8

#define DISCHARGESOFTSTOPMODE 9

?

#define JUDGEMODE_DEFAULT {0,0,0,0,0,0,0,0,0,0,0,0,\

????2,10,10,2,10,0,0,0,10,10,10,10,\

????CHARGEREF,CHARGE_DISCHARGE,DISCHARGEREF,OVERVOLTAGE,SAFECURRENT,OVERCURRENT,\

????WORKMODE,LASTWORKMODE,\

????READYSTARTMODE,CHARGESOFTSTARTMODE,CHARGEMODE,DISCHARGEMODE,DISCHARGESOFTSTARTMODE,OVERVOLTAGEMODE,SAFECURRENTMODE,OVERCURRENTMODE,\

????CHARGESOFTSTOPMODE,DISCHARGESOFTSTOPMODE\

????}

?

//------------------------------------结构体--------------------------------------------------

????typedef
struct

????{

????????//累计次数.最大31

????????unsigned
long
temp1:5;

????????unsigned
long
temp2:5;

????????unsigned
long
temp3:5;

????????unsigned
long
temp4:5;

????????unsigned
long
temp5:5;

????????unsigned
long
temp6:5;

????????unsigned
long :0;

????????unsigned
long
temp7:5;

????????unsigned
long
temp8:5;

????????unsigned
long
temp9:5;

????????unsigned
long
tempA:5;

????????unsigned
long
tempB:5;

????????unsigned
long
tempC:5;

????????unsigned
long :0;

?

????????//容错次数.最大31

????????const
unsigned
long
ChangeLevel1:5;

????????const
unsigned
long
ChangeLevel2:5;

????????const
unsigned
long
ChangeLevel3:5;

????????const
unsigned
long
ChangeLevel4:5;

????????const
unsigned
long
ChangeLevel5:5;

????????const
unsigned
long
ChangeLevel6:5;

????????unsigned
long :0;

????????const
unsigned
long
ChangeLevel7:5;

????????const
unsigned
long
ChangeLevel8:5;

????????const
unsigned
long
ChangeLevel9:5;

????????const
unsigned
long
ChangeLevelA:5;

????????const
unsigned
long
ChangeLevelB:5;

????????const
unsigned
long
ChangeLevelC:5;

????????unsigned
long :0;

?

????????//电压界限

????????const
float
ChargeRef; //充电给定电压

????????const
float
Charge_Discharge; //充电和放电的边界

????????const
float
DischargeRef; //放电给定电压

????????const
float
OverVoltage; //过压电压

????????//电流界限

????????const
float
SafeCurrent; //安全电流

????????const
float
OverCurrent; //过流电流

?

????????//工作模式

????????unsigned
long
WorkMode :6; //控制模式标志位

????????unsigned
long
LastWorkMode :6; //上一次的控制模式

????????unsigned
long :0;

?

????????//模式标志

????????const
unsigned
long
ReadyStartMode :1; //待机状态的代码 0

????????const
unsigned
long
ChargeSoftStartMode :1; //充电软启动模式的代码 1

????????const
unsigned
long
ChargeMode :2; //正常充电模式的代码 2

????????//const unsigned long DeadZoneMode :2; //死区模式的代码 3

????????const
unsigned
long
DischargeMode :3; //放电模式的代码 4

????????const
unsigned
long
DisChargeSoftStartMode:3; //放电软启的代码 5

????????const
unsigned
long
OverVoltageMode :3; //立即保护模式的代码 6

????????const
unsigned
long
SafeCurrentMode :3; //立即保护模式的代码 7

????????const
unsigned
long
OverCurrentMode :4; //立即保护模式的代码 8

????????const
unsigned
long
ChargeSoftStopMode :4; //充电时软关断的代码 9

????????const
unsigned
long
DischargeSoftStopMode :4; //放电时软关断的代码 10

????????unsigned
long :0;

????}JUDGEMODE;

?

?

//------------------------------------函数原型------------------------------------------------

????void
RunJudgeControlMode(const
float CurrentValue);

????void
ControlModeSelect(const
long WorkMode,const
unsigned ExterSignal,const
float Voltage,const
float Current);

????void
PWMJudge(const
unsigned
long WorkMode);

????void
StartJudgeControlMode(const
float Voltage,const
float Current,const
unsigned
long WorkMode);

????void
StopJudgeControlMode(const
long);

????void
ClearChargePIstat(void);

????void
ClearDischargePIstate(void);

????void
ClearDuty(const
char ClrChargeDuty,const
char ClrDischargeDuty);

????void
ResetJudgeMode(void);

# endif

?

//------------------------------------no more-----------------------------------------------

时间: 2024-08-08 05:18:10

正确理解C语言指针申明的含义的相关文章

"深入理解C语言" 指针

本文对coolshell中的"深入理解C语言"这篇文章中提到的指针问题, 进行简要的分析. #include <stdio.h> int main(void){ int a[5]; printf("%x\n", a); printf("%x\n", a + 1); printf("%x\n", &a); printf("%x\n", &a + 1); return 0; } 假设

快速理解C语言指针

新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值.它的定义如下: int a=10,*p; p=&a int a=10; int *p=&a; 首先我们可以理解 int* 这个是要定义一个指针p,然后因为这个指针存储的是地址所以要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a. 很多新手都会对这两种定义方

小强版之无码理解C语言指针

 1. 先从普通变量开始   2. 撸完变量撸指针   3. 故事情节进一步发展,此处少儿不宜   4. 奶茶妹妹捉奸,小强死定了   5. 源码欣赏  #include <stdio.h> int main(void){ // 剧情一. 先从普通变量开始,小强开总统套房,5342 走起! int suite = 5342; //剧情二 撸完变量撸指针,开房二套, 彰显财气 int *_3p = &suite; printf("suite : %d\n", suit

C语言指针的深入理解

指针是C语言中广泛使用的一种数据类型.运用指针编程是C语言最主要的风格之一. 利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串:并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志. C语言为什么有指针以及指针有什么好处? 从大体上讲:指针是 C 语言区别于其他同时代高级语言的主要特征之一.其次因为数组或函数都是连续存放的.通过访问指针变量取得了数组或函数的首

c语言指针详细解释

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 是否能正确理解和使用指针是我们是否掌握C语言的一个标志.同一时候, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必需要多编程,上机调试.仅仅要作到这些,指针也是不难掌握的. 指针的基本概念 在计算

c语言指针详解

指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试.只要作到这些,指针也是不难掌握的. 指针的基本概念 在计算机中,所有的数据

正确理解PHP的错误信息大全

编译PHP脚本时,PHP编译器会尽其所能报告它遇到的第一个问题.这样就产 生一个问题:只有当错误出现时,PHP才能将它识别出来(本文后面对此问题进行了详细描述).正是由于这个缘故,编译器指出出错的那行,从表面上看来可能 语法正确无误,或者可能是根本就不存在的一行! 更好地理解错误信息可以大大节省确定并改正错误内容所花费的时间.因此,在本文中,我将努力阐明多种不同类型的PHP报错信息,以及在开发过程中如何正确理解各种报错信息的含义. 本文中所讲述的内容与您所应用的PHP的版本无关,因为本文所描述的

彻底搞定C语言指针详解

1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 13 ----------------------------------------------------------------- ... | | | | | | | |.. ------------------------------- ---------------------------

彻底搞定C语言指针,初学者必备

1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 13 ----------------------------------------------------------------- ... | | | | | | | |.. ------------------------------- ---------------------------