hw.c

来自「《OSEK/VDX汽车电子嵌入式软件编程技术》中光盘的资料」· C语言 代码 · 共 99 行

C
99
字号
/************************************************
*
*	$Copyright    2001 Joseph J. Lemieux  ALL RIGHTS RESERVED. $
*
*	$Filename: C:\OSEKBook\src\CH04\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;

	if(((HW_KEYPAD_INPUT_TYPE *)hardware)->type == 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;
      }
   }
   return value;
}
#endif /* HWC */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?