📄 hw.c
字号:
/************************************************
*
* $Copyright 2001 Joseph J. Lemieux ALL RIGHTS RESERVED. $
*
* $Filename: C:\OSEKBook\src\CH13\src\hw.c $
*
* Description: Hardware Interface Drivers
*
************************************************/
#ifndef HWC
#define HWC
/************************************************
*
* Include files
*
************************************************/
#include "typedefs.h"
#include "hw.h"
/************************************************
*
* Local macros
*
************************************************/
/************************************************
*
* Local type definitions
*
************************************************/
/************************************************
*
* Local Function Prototypes
*
************************************************/
/************************************************
*
* Local Variables
*
************************************************/
/************************************************
*
* Local Constants
*
************************************************/
/************************************************
*
* Functions
*
************************************************/
/************************************************
*
* Function: HWGetValue
*
* Inputs: *hardware - reference to a constant structure
* that contains the type of hardware to be checked
*
* Outputs: none
*
* Returns: Current value of the hardware port.
*
* Description: Obtains the current state of a hardware port
* and returns it.
*
************************************************/
UINT32 HWGetValue(void *hardware)
{
UINT32 value=0;
KEYPAD_TRANSLATION_TYPE *trans;
switch(((HW_KEYPAD_INPUT_TYPE *)hardware)->type){
case HWKEYPAD:
value = *((HW_KEYPAD_INPUT_TYPE *)hardware)->port;
value = (value & ((HW_KEYPAD_INPUT_TYPE *)hardware)->mask)>>((HW_KEYPAD_INPUT_TYPE *)hardware)->shift;
trans = ((HW_KEYPAD_INPUT_TYPE *)hardware)->translation;
while(trans->output != 0xFF){
if(trans->input == value){
break;
}
trans++;
}
if((value = trans->output) == 0xFF){
value = 0;
}
break;
case HWDIGITAL16:
if((*((HW_DIGITAL16_INPUT_TYPE *)hardware)->port & ((HW_DIGITAL16_INPUT_TYPE *)hardware)->mask)==0){
value = INACTIVE;
}
else{
value = ACTIVE;
}
}
return value;
}
#endif /* HWC */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -