📄 support.c
字号:
(void) IntrType; /* Reference to avoid compiler warning */
((unsigned long far *)(0))[Vector] = (unsigned long)IntrProc;
}
/* APB_BLOCK_END */
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/* APB_BLOCK_START = TIMERS */
/* InitTimer:
Description:
Parameters:
Unit Unit number of the timer. EX supports 0, 1 or 2
Mode Defines Counter Mode and Count value type
Inputs Specifies Input sources
Output Specifies Which Output to drive
InitCount Value to be loaded into count register
Enable Enable (1) or disable (0) Timer
Returns: Error Codes
E_INVAILD_DEVICE -- Unit number specifies a non-existing device
E_OK -- Initialized OK, No error.
Assumptions:
REMAPCFG register has Expanded I/O space access enabled (ESE bit set).
Real/Protected Mode
No changes required.
*/
int InitTimer(int Unit, WORD Mode, BYTE Inputs, BYTE Output,WORD InitCount, int Enable)
{
BYTE TmpByte;
WORD TmrCntPort;
if(Unit > 2)
return E_INVALID_DEVICE;
TmrCntPort = 0xf040 + Unit; /* Set depending on which timer */
/* Set Pin configuration */
if(Unit < 2)
{
TmpByte = _GetEXRegByte(P3CFG) | (Output << Unit); /* Bit 0 or 1 */
_SetEXRegByte(P3CFG,TmpByte);
}
else
{
TmpByte = _GetEXRegByte(PINCFG) | (Output << 5); /* Bit 5 */
_SetEXRegByte(PINCFG,TmpByte);
}
/* Set Timer Config */
TmpByte = _GetEXRegByte(TMRCFG); /* All Timers share this register, Keep previous settings */
if(!Enable)
TmpByte |= 0x80; /* Set Timer Disable Bit */
TmpByte |= (Inputs << (Unit*2)); /* Set CK?CON and GT?CON bits */
_SetEXRegByte(TMRCFG,TmpByte);
/* Set Timer Control Register */
TmpByte = Unit << 6; /* Set counter select */
TmpByte |= (0x30 | Mode); /* Set R/W low then high byte and Mode bits */
_SetEXRegByte(TMRCON,TmpByte);
/* Set Initial Counter Value */
TmpByte = HIBYTE(InitCount);
_SetEXRegByte(TmrCntPort, LOBYTE(InitCount));
_SetEXRegByte(TmrCntPort, TmpByte);
return E_OK;
}
void interrupt far TimerISR(void)
{
}
/* APB_BLOCK_END */
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/* APB_BLOCK_START = WDT */
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void SetupWDT(BYTE Status)
{
_SetEXRegByte(WDSTATUS, Status);
}
/* APB_BLOCK_END */
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/* APB_BLOCK_START = IO */
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void InitIO1(BYTE P1_LTC, BYTE P1_DIR, BYTE P1_CFG)
{
/* port 1 init */
_EnableExtIOMem();
_SetEXRegByte(P1LTC, P1_LTC);
_SetEXRegByte(P1DIR, P1_DIR);
_SetEXRegByte(P1CFG, P1_CFG);
_DisableExtIOMem();
}
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void InitIO2(BYTE P2_LTC, BYTE P2_DIR, BYTE P2_CFG)
{
/* port 2 init */
_EnableExtIOMem();
_SetEXRegByte(P2LTC, P2_LTC);
_SetEXRegByte(P2DIR, P2_DIR);
_SetEXRegByte(P2CFG, P2_CFG);
_DisableExtIOMem();
}
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void InitIO3(BYTE P3_LTC, BYTE P3_DIR, BYTE P3_CFG)
{
/* port 3 init */
_EnableExtIOMem();
_SetEXRegByte(P3LTC, P3_LTC);
_SetEXRegByte(P3DIR, P3_DIR);
_SetEXRegByte(P3CFG, P3_CFG);
_DisableExtIOMem();
}
/* APB_BLOCK_END */
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/* APB_BLOCK_START = RCU */
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void Init_RCU(BYTE Value1, BYTE Value2, BYTE Value3, BYTE Value4)
{
_EnableExtIOMem();
_SetEXRegWord(RFSCIR, Value1); /* Program refresh interval. */
_SetEXRegWord(RFSBAD, Value2); /* Program base address. */
_SetEXRegWord(RFSADD, Value3); /* Program address register. */
_SetEXRegWord(RFSCON, Value4); /* Program the enable bit. */
_DisableExtIOMem();
}
/* APB_BLOCK_END */
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/******************************************************************************************************************/
/* APB_BLOCK_START = CLOCK_AND_PM */
/*
* FUNCTION:
*
* DESCRIPTION:
*
*
*
*
* PARAMETERS:
*
* RETURN VALUE:
*
* CALL FORMAT:
*
* EXT EFFECTS:
*
*
*/
void Init_ClockPMU(BYTE PowerCont, BYTE ClockPrescale)
{
_EnableExtIOMem();
_SetEXRegByte(PWRCON, PowerCont);
_SetEXRegWord(CLKPRS, ClockPrescale);
_DisableExtIOMem();
}
/* APB_BLOCK_END */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -