📄 lib_at91sam7x256.h
字号:
}/* ***************************************************************************** SOFTWARE API FOR PMC ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn AT91F_PMC_CfgSysClkEnableReg//* \brief Configure the System Clock Enable Register of the PMC controller//*----------------------------------------------------------------------------__inline void AT91F_PMC_CfgSysClkEnableReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode){ //* Write to the SCER register pPMC->PMC_SCER = mode;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_CfgSysClkDisableReg//* \brief Configure the System Clock Disable Register of the PMC controller//*----------------------------------------------------------------------------__inline void AT91F_PMC_CfgSysClkDisableReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode){ //* Write to the SCDR register pPMC->PMC_SCDR = mode;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_GetSysClkStatusReg//* \brief Return the System Clock Status Register of the PMC controller//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetSysClkStatusReg ( AT91PS_PMC pPMC // pointer to a CAN controller ){ return pPMC->PMC_SCSR;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_EnablePeriphClock//* \brief Enable peripheral clock//*----------------------------------------------------------------------------__inline void AT91F_PMC_EnablePeriphClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int periphIds) // \arg IDs of peripherals to enable{ pPMC->PMC_PCER = periphIds;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_DisablePeriphClock//* \brief Disable peripheral clock//*----------------------------------------------------------------------------__inline void AT91F_PMC_DisablePeriphClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int periphIds) // \arg IDs of peripherals to enable{ pPMC->PMC_PCDR = periphIds;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_GetPeriphClock//* \brief Get peripheral clock status//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetPeriphClock ( AT91PS_PMC pPMC) // \arg pointer to PMC controller{ return pPMC->PMC_PCSR;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_CfgMainOscillatorReg//* \brief Cfg the main oscillator//*----------------------------------------------------------------------------__inline void AT91F_CKGR_CfgMainOscillatorReg ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int mode){ pCKGR->CKGR_MOR = mode;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_GetMainOscillatorReg//* \brief Cfg the main oscillator//*----------------------------------------------------------------------------__inline unsigned int AT91F_CKGR_GetMainOscillatorReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller{ return pCKGR->CKGR_MOR;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_EnableMainOscillator//* \brief Enable the main oscillator//*----------------------------------------------------------------------------__inline void AT91F_CKGR_EnableMainOscillator( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller{ pCKGR->CKGR_MOR |= AT91C_CKGR_MOSCEN;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_DisableMainOscillator//* \brief Disable the main oscillator//*----------------------------------------------------------------------------__inline void AT91F_CKGR_DisableMainOscillator ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller{ pCKGR->CKGR_MOR &= ~AT91C_CKGR_MOSCEN;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_CfgMainOscStartUpTime//* \brief Cfg MOR Register according to the main osc startup time//*----------------------------------------------------------------------------__inline void AT91F_CKGR_CfgMainOscStartUpTime ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int startup_time, // \arg main osc startup time in microsecond (us) unsigned int slowClock) // \arg slowClock in Hz{ pCKGR->CKGR_MOR &= ~AT91C_CKGR_OSCOUNT; pCKGR->CKGR_MOR |= ((slowClock * startup_time)/(8*1000000)) << 8;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_GetMainClockFreqReg//* \brief Cfg the main oscillator//*----------------------------------------------------------------------------__inline unsigned int AT91F_CKGR_GetMainClockFreqReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller{ return pCKGR->CKGR_MCFR;}//*----------------------------------------------------------------------------//* \fn AT91F_CKGR_GetMainClock//* \brief Return Main clock in Hz//*----------------------------------------------------------------------------__inline unsigned int AT91F_CKGR_GetMainClock ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int slowClock) // \arg slowClock in Hz{ return ((pCKGR->CKGR_MCFR & AT91C_CKGR_MAINF) * slowClock) >> 4;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_CfgMCKReg//* \brief Cfg Master Clock Register//*----------------------------------------------------------------------------__inline void AT91F_PMC_CfgMCKReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode){ pPMC->PMC_MCKR = mode;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_GetMCKReg//* \brief Return Master Clock Register//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetMCKReg( AT91PS_PMC pPMC) // \arg pointer to PMC controller{ return pPMC->PMC_MCKR;}//*------------------------------------------------------------------------------//* \fn AT91F_PMC_GetMasterClock//* \brief Return master clock in Hz which correponds to processor clock for ARM7//*------------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetMasterClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int slowClock) // \arg slowClock in Hz{ unsigned int reg = pPMC->PMC_MCKR; unsigned int prescaler = (1 << ((reg & AT91C_PMC_PRES) >> 2)); unsigned int pllDivider, pllMultiplier; switch (reg & AT91C_PMC_CSS) { case AT91C_PMC_CSS_SLOW_CLK: // Slow clock selected return slowClock / prescaler; case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / prescaler; case AT91C_PMC_CSS_PLL_CLK: // PLLB clock is selected reg = pCKGR->CKGR_PLLR; pllDivider = (reg & AT91C_CKGR_DIV); pllMultiplier = ((reg & AT91C_CKGR_MUL) >> 16) + 1; return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler; } return 0;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_EnablePCK//* \brief Enable peripheral clock//*----------------------------------------------------------------------------__inline void AT91F_PMC_EnablePCK ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int pck, // \arg Peripheral clock identifier 0 .. 7 unsigned int mode){ pPMC->PMC_PCKR[pck] = mode; pPMC->PMC_SCER = (1 << pck) << 8;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_DisablePCK//* \brief Enable peripheral clock//*----------------------------------------------------------------------------__inline void AT91F_PMC_DisablePCK ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int pck) // \arg Peripheral clock identifier 0 .. 7{ pPMC->PMC_SCDR = (1 << pck) << 8;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_EnableIt//* \brief Enable PMC interrupt//*----------------------------------------------------------------------------__inline void AT91F_PMC_EnableIt ( AT91PS_PMC pPMC, // pointer to a PMC controller unsigned int flag) // IT to be enabled{ //* Write to the IER register pPMC->PMC_IER = flag;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_DisableIt//* \brief Disable PMC interrupt//*----------------------------------------------------------------------------__inline void AT91F_PMC_DisableIt ( AT91PS_PMC pPMC, // pointer to a PMC controller unsigned int flag) // IT to be disabled{ //* Write to the IDR register pPMC->PMC_IDR = flag;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_GetStatus//* \brief Return PMC Interrupt Status//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetStatus( // \return PMC Interrupt Status AT91PS_PMC pPMC) // pointer to a PMC controller{ return pPMC->PMC_SR;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_GetInterruptMaskStatus//* \brief Return PMC Interrupt Mask Status//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_GetInterruptMaskStatus( // \return PMC Interrupt Mask Status AT91PS_PMC pPMC) // pointer to a PMC controller{ return pPMC->PMC_IMR;}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_IsInterruptMasked//* \brief Test if PMC Interrupt is Masked//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_IsInterruptMasked( AT91PS_PMC pPMC, // \arg pointer to a PMC controller unsigned int flag) // \arg flag to be tested{ return (AT91F_PMC_GetInterruptMaskStatus(pPMC) & flag);}//*----------------------------------------------------------------------------//* \fn AT91F_PMC_IsStatusSet//* \brief Test if PMC Status is Set//*----------------------------------------------------------------------------__inline unsigned int AT91F_PMC_IsStatusSet( AT91PS_PMC pPMC, // \arg pointer to a PMC controller unsigned int flag) // \arg flag to be tested{ return (AT91F_PMC_GetStatus(pPMC) & flag);}// ----------------------------------------------------------------------------// \fn AT91F_CKGR_CfgPLLReg// \brief Cfg the PLL Register// ----------------------------------------------------------------------------__inline void AT91F_CKGR_CfgPLLReg ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int mode){ pCKGR->CKGR_PLLR = mode;}// ----------------------------------------------------------------------------// \fn AT91F_CKGR_GetPLLReg// \brief Get the PLL Register// ----------------------------------------------------------------------------__inline unsigned int AT91F_CKGR_GetPLLReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller{ return pCKGR->CKGR_PLLR;}/* ***************************************************************************** SOFTWARE API FOR RSTC ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn AT91F_RSTSoftReset//* \brief Start Software Reset//*----------------------------------------------------------------------------__inline void AT91F_RSTSoftReset( AT91PS_RSTC pRSTC, unsigned int reset){ pRSTC->RSTC_RCR = (0xA5000000 | reset);}//*----------------------------------------------------------------------------//* \fn AT91F_RSTSetMode//* \brief Set Reset Mode//*----------------------------------------------------------------------------__inline void AT91F_RSTSetMode( AT91PS_RSTC pRSTC, unsigned int mode){ pRSTC->RSTC_RMR = (0xA5000000 | mode);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -