📄 lib_at91sam7x256.h
字号:
//*----------------------------------------------------------------------------//* \fn AT91F_RSTGetMode//* \brief Get Reset Mode//*----------------------------------------------------------------------------__inline unsigned int AT91F_RSTGetMode( AT91PS_RSTC pRSTC){ return (pRSTC->RSTC_RMR);}//*----------------------------------------------------------------------------//* \fn AT91F_RSTGetStatus//* \brief Get Reset Status//*----------------------------------------------------------------------------__inline unsigned int AT91F_RSTGetStatus( AT91PS_RSTC pRSTC){ return (pRSTC->RSTC_RSR);}//*----------------------------------------------------------------------------//* \fn AT91F_RSTIsSoftRstActive//* \brief Return !=0 if software reset is still not completed//*----------------------------------------------------------------------------__inline unsigned int AT91F_RSTIsSoftRstActive( AT91PS_RSTC pRSTC){ return ((pRSTC->RSTC_RSR) & AT91C_RSTC_SRCMP);}/* ***************************************************************************** SOFTWARE API FOR RTTC ***************************************************************************** *///*--------------------------------------------------------------------------------------//* \fn AT91F_SetRTT_TimeBase()//* \brief Set the RTT prescaler according to the TimeBase in ms//*--------------------------------------------------------------------------------------__inline unsigned int AT91F_RTTSetTimeBase( AT91PS_RTTC pRTTC, unsigned int ms){ if (ms > 2000) return 1; // AT91C_TIME_OUT_OF_RANGE pRTTC->RTTC_RTMR &= ~0xFFFF; pRTTC->RTTC_RTMR |= (((ms << 15) /1000) & 0xFFFF); return 0;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTTSetPrescaler()//* \brief Set the new prescaler value//*--------------------------------------------------------------------------------------__inline unsigned int AT91F_RTTSetPrescaler( AT91PS_RTTC pRTTC, unsigned int rtpres){ pRTTC->RTTC_RTMR &= ~0xFFFF; pRTTC->RTTC_RTMR |= (rtpres & 0xFFFF); return (pRTTC->RTTC_RTMR);}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTTRestart()//* \brief Restart the RTT prescaler//*--------------------------------------------------------------------------------------__inline void AT91F_RTTRestart( AT91PS_RTTC pRTTC){ pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTRST; }//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_SetAlarmINT()//* \brief Enable RTT Alarm Interrupt//*--------------------------------------------------------------------------------------__inline void AT91F_RTTSetAlarmINT( AT91PS_RTTC pRTTC){ pRTTC->RTTC_RTMR |= AT91C_RTTC_ALMIEN;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_ClearAlarmINT()//* \brief Disable RTT Alarm Interrupt//*--------------------------------------------------------------------------------------__inline void AT91F_RTTClearAlarmINT( AT91PS_RTTC pRTTC){ pRTTC->RTTC_RTMR &= ~AT91C_RTTC_ALMIEN;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_SetRttIncINT()//* \brief Enable RTT INC Interrupt//*--------------------------------------------------------------------------------------__inline void AT91F_RTTSetRttIncINT( AT91PS_RTTC pRTTC){ pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTINCIEN;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_ClearRttIncINT()//* \brief Disable RTT INC Interrupt//*--------------------------------------------------------------------------------------__inline void AT91F_RTTClearRttIncINT( AT91PS_RTTC pRTTC){ pRTTC->RTTC_RTMR &= ~AT91C_RTTC_RTTINCIEN;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_SetAlarmValue()//* \brief Set RTT Alarm Value//*--------------------------------------------------------------------------------------__inline void AT91F_RTTSetAlarmValue( AT91PS_RTTC pRTTC, unsigned int alarm){ pRTTC->RTTC_RTAR = alarm;}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_GetAlarmValue()//* \brief Get RTT Alarm Value//*--------------------------------------------------------------------------------------__inline unsigned int AT91F_RTTGetAlarmValue( AT91PS_RTTC pRTTC){ return(pRTTC->RTTC_RTAR);}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTTGetStatus()//* \brief Read the RTT status//*--------------------------------------------------------------------------------------__inline unsigned int AT91F_RTTGetStatus( AT91PS_RTTC pRTTC){ return(pRTTC->RTTC_RTSR);}//*--------------------------------------------------------------------------------------//* \fn AT91F_RTT_ReadValue()//* \brief Read the RTT value//*--------------------------------------------------------------------------------------__inline unsigned int AT91F_RTTReadValue( AT91PS_RTTC pRTTC){ register volatile unsigned int val1,val2; do { val1 = pRTTC->RTTC_RTVR; val2 = pRTTC->RTTC_RTVR; } while(val1 != val2); return(val1);}/* ***************************************************************************** SOFTWARE API FOR PITC ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn AT91F_PITInit//* \brief System timer init : period in 祍econd, system clock freq in MHz//*----------------------------------------------------------------------------__inline void AT91F_PITInit( AT91PS_PITC pPITC, unsigned int period, unsigned int pit_frequency){ pPITC->PITC_PIMR = period? (period * pit_frequency + 8) >> 4 : 0; // +8 to avoid %10 and /10 pPITC->PITC_PIMR |= AT91C_PITC_PITEN; }//*----------------------------------------------------------------------------//* \fn AT91F_PITSetPIV//* \brief Set the PIT Periodic Interval Value//*----------------------------------------------------------------------------__inline void AT91F_PITSetPIV( AT91PS_PITC pPITC, unsigned int piv){ pPITC->PITC_PIMR = piv | (pPITC->PITC_PIMR & (AT91C_PITC_PITEN | AT91C_PITC_PITIEN));}//*----------------------------------------------------------------------------//* \fn AT91F_PITEnableInt//* \brief Enable PIT periodic interrupt//*----------------------------------------------------------------------------__inline void AT91F_PITEnableInt( AT91PS_PITC pPITC){ pPITC->PITC_PIMR |= AT91C_PITC_PITIEN; }//*----------------------------------------------------------------------------//* \fn AT91F_PITDisableInt//* \brief Disable PIT periodic interrupt//*----------------------------------------------------------------------------__inline void AT91F_PITDisableInt( AT91PS_PITC pPITC){ pPITC->PITC_PIMR &= ~AT91C_PITC_PITIEN; }//*----------------------------------------------------------------------------//* \fn AT91F_PITGetMode//* \brief Read PIT mode register//*----------------------------------------------------------------------------__inline unsigned int AT91F_PITGetMode( AT91PS_PITC pPITC){ return(pPITC->PITC_PIMR);}//*----------------------------------------------------------------------------//* \fn AT91F_PITGetStatus//* \brief Read PIT status register//*----------------------------------------------------------------------------__inline unsigned int AT91F_PITGetStatus( AT91PS_PITC pPITC){ return(pPITC->PITC_PISR);}//*----------------------------------------------------------------------------//* \fn AT91F_PITGetPIIR//* \brief Read PIT CPIV and PICNT without ressetting the counters//*----------------------------------------------------------------------------__inline unsigned int AT91F_PITGetPIIR( AT91PS_PITC pPITC){ return(pPITC->PITC_PIIR);}//*----------------------------------------------------------------------------//* \fn AT91F_PITGetPIVR//* \brief Read System timer CPIV and PICNT without ressetting the counters//*----------------------------------------------------------------------------__inline unsigned int AT91F_PITGetPIVR( AT91PS_PITC pPITC){ return(pPITC->PITC_PIVR);}/* ***************************************************************************** SOFTWARE API FOR WDTC ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn AT91F_WDTSetMode//* \brief Set Watchdog Mode Register//*----------------------------------------------------------------------------__inline void AT91F_WDTSetMode( AT91PS_WDTC pWDTC, unsigned int Mode){ pWDTC->WDTC_WDMR = Mode;}//*----------------------------------------------------------------------------//* \fn AT91F_WDTRestart//* \brief Restart Watchdog//*----------------------------------------------------------------------------__inline void AT91F_WDTRestart( AT91PS_WDTC pWDTC){ pWDTC->WDTC_WDCR = 0xA5000001;}//*----------------------------------------------------------------------------//* \fn AT91F_WDTSGettatus//* \brief Get Watchdog Status//*----------------------------------------------------------------------------__inline unsigned int AT91F_WDTSGettatus( AT91PS_WDTC pWDTC){ return(pWDTC->WDTC_WDSR & 0x3);}//*----------------------------------------------------------------------------//* \fn AT91F_WDTGetPeriod//* \brief Translate ms into Watchdog Compatible value//*----------------------------------------------------------------------------__inline unsigned int AT91F_WDTGetPeriod(unsigned int ms){ if ((ms < 4) || (ms > 16000)) return 0; return((ms << 8) / 1000);}/* ***************************************************************************** SOFTWARE API FOR VREG ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn AT91F_VREG_Enable_LowPowerMode//* \brief Enable VREG Low Power Mode//*----------------------------------------------------------------------------__inline void AT91F_VREG_Enable_LowPowerMode( AT91PS_VREG pVREG){ pVREG->VREG_MR |= AT91C_VREG_PSTDBY; }//*----------------------------------------------------------------------------//* \fn AT91F_VREG_Disable_LowPowerMode//* \brief Disable VREG Low Power Mode//*----------------------------------------------------------------------------__inline void AT91F_VREG_Disable_LowPowerMode( AT91PS_VREG pVREG){ pVREG->VREG_MR &= ~AT91C_VREG_PSTDBY; }/* ***************************************************************************** SOFTWARE API FOR MC ***************************************************************************** */#define AT91C_MC_CORRECT_KEY ((unsigned int) 0x5A << 24) // (MC) Correct Protect Key//*----------------------------------------------------------------------------//* \fn AT91F_MC_Remap//* \brief Make Remap//*----------------------------------------------------------------------------__inline void AT91F_MC_Remap (void) //{ AT91PS_MC pMC = (AT91PS_MC) AT91C_BASE_MC; pMC->MC_RCR = AT91C_MC_RCB;}//*----------------------------------------------------------------------------//* \fn AT91F_MC_EFC_CfgModeReg//* \brief Configure the EFC Mode Register of the MC controller//*----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -