⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib_at91sam7x256.h

📁 CANopen 协议栈源码 ,实现基本的CANopen 协议
💻 H
📖 第 1 页 / 共 5 页
字号:
}/* *****************************************************************************                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 + -