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

📄 apb.c

📁 arm(str710)usb功能的实现
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                      
**                                          STR710 development team
**                                          
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: apb.c
** 创 建 人: lhl
** 创建日期: 2006年5月10日
** 描    述: 该文件提供所有的APB软件操作功能
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: lhl
** 版    本: V1.0
** 日   期: 2006年5月10日
** 描   述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


#include "apb.h"


#if EN_ARM_APB > 0		//决定是否编译该文件

/******************************************* 全局变量定义 ***********************************************/


/******************************************* 局部函数声明 ***********************************************/


/*********************************************************************************************************
;** 函数名称: APBn_ClockConfig
;** 功能描述: 允许禁止APBn所属外设时钟 说明:该函数不被频繁的调用,执行速度没有什么要求,所以可不定义为内联函数
;** 
;** 参    数: abp_number: 外设所属的APB编号(APB1,ABP2) 
:**           new_status: ENABLE: 允许 DISABLE: 禁止
;**           peripheral: 具体的设备
;**  
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void APBn_ClockConfig(APB_CHANNELS_T abp_channel, CONFIG_STATUS_T new_status, UWORD16 peripheral)                              
{
	if(APB1 == abp_channel)
	{
		if(new_status == ENABLE)
			APB1_CKDIS  &= ~peripheral;
		else
			APB1_CKDIS  |= peripheral;
	}
	else if(APB2 == abp_channel)
	{
		if(new_status == ENABLE)
			APB2_CKDIS  &= ~peripheral;
		else
			APB2_CKDIS  |= peripheral;
		
	}	
}

/*********************************************************************************************************
;** 函数名称: APBn_SwResetConfig
;** 功能描述: 禁止或允许指定外设软件复位
;** 
;** 参    数: abp_number: 外设所属的APB编号(APB1,ABP2) 
:**           new_status: ENABLE: 允许 DISABLE: 禁止
;**           peripheral: 具体的设备
;**
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void APBn_SwResetConfig(APB_CHANNELS_T abp_channel, CONFIG_STATUS_T new_status, UWORD16 peripheral)                        
{
	if(APB1 == abp_channel)
	{
		if(new_status == ENABLE)
		{
			APB1_SWRES  |= peripheral;
		}
		else 
		{
			APB1_SWRES  &= ~peripheral;
		}
		
	}
	else if(APB2 == abp_channel)
	{
		if(new_status == ENABLE)
		{
			APB2_SWRES  |= peripheral;
		}
		else 
		{
			APB2_SWRES  &= ~peripheral;
		}
	}	
}

/*********************************************************************************************************
;** 函数名称: APBn_AllClockConfig
;** 功能描述: 允许允许APBn所属外设时钟
;** 
;** 参    数: abp_number: 外设所属的APB编号(APB1,ABP2) 
:**           new_status: ENABLE: 允许 DISABLE: 禁止
;**
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void APBn_AllClockConfig(APB_CHANNELS_T abp_channel, CONFIG_STATUS_T new_status)
{
	if(APB1 == abp_channel)	           //APB1所属外设时钟禁止或允许
	{
		if(new_status == ENABLE)
			APB1_CKDIS = 0x00000000;
		else 
			APB1_CKDIS = 0x000027FB ;
	}
	else if(APB2 == abp_channel)	   //APB2所属外设时钟禁止或允许
	{
		if(new_status == ENABLE)
			APB2_CKDIS = 0x00000000;
		else 
			APB2_CKDIS = 0x00007FDD ;
	}
}

/*********************************************************************************************************
;** 函数名称: APBn_AllSwResetConfig
;** 功能描述: 禁止或允许所有APBn外设软件复位
;** 
;** 参    数: abp_number: 外设所属的APB编号(APB1,ABP2) 
:**           status    : new_status: ENABLE: 允许 DISABLE: 禁止
;**
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void APBn_AllSwResetConfig(APB_CHANNELS_T abp_channel, CONFIG_STATUS_T new_status)
{
	if(APB1 == abp_channel)	           //APB1所属外设时钟禁止或允许
	{
		if(new_status == ENABLE)
			APB1_SWRES = 0x000027FB ;
		else 
			APB1_SWRES = 0x00000000;
	}
	else if(APB2 == abp_channel)	   //APB2所属外设时钟禁止或允许
	{
		if(new_status == ENABLE)
			APB2_SWRES = 0x00007FDD;
		else 
			APB2_SWRES = 0x00000000;
	}
}

#endif //EN_ARM_APB > 0
/****************************************end of file*******************************************/

⌨️ 快捷键说明

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