📄 apb.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 + -