261 lines
8.2 KiB
C
261 lines
8.2 KiB
C
/************************************************************************************************/
|
||
/**
|
||
* @file ciu32l051_std_syscfg.h
|
||
* @author MCU Ecosystem Development Team
|
||
* @brief SYSCFG STD库驱动头文件。
|
||
* 提供SYSCFG相关的STD库操作函数声明、数据类型以及常量的定义。
|
||
*
|
||
*
|
||
**************************************************************************************************
|
||
* @attention
|
||
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
||
*
|
||
**************************************************************************************************
|
||
*/
|
||
|
||
/* 避免头文件重复引用 */
|
||
#ifndef CIU32L051_STD_SYSCFG_H
|
||
#define CIU32L051_STD_SYSCFG_H
|
||
|
||
/************************************************************************************************/
|
||
/**
|
||
* @addtogroup CIU32L051_STD_Driver
|
||
* @{
|
||
*/
|
||
|
||
/**
|
||
* @defgroup SYSCFG SYSCFG
|
||
* @brief 系统配置控制器的STD库驱动
|
||
* @{
|
||
*
|
||
*/
|
||
/************************************************************************************************/
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/*------------------------------------includes--------------------------------------------------*/
|
||
#include "ciu32l051_std_common.h"
|
||
|
||
/*-------------------------------------define---------------------------------------------------*/
|
||
|
||
/************************************************************************************************/
|
||
/**
|
||
* @defgroup SYSCFG_Constants SYSCFG Constants
|
||
* @brief SYSCFG常量定义及宏定义
|
||
* @{
|
||
*
|
||
*/
|
||
/************************************************************************************************/
|
||
/* IRTIM调制信号选择 */
|
||
#define SYSCFG_IRMODE_TIM5_OC1 SYSCFG_CR_IR_MODE_TIM5_OC1 /**< 调制信号源于TIM5_OC1 */
|
||
#define SYSCFG_IRMODE_USART1_TX SYSCFG_CR_IR_MODE_USART1_TX /**< 调制信号源于USART1_TX */
|
||
#define SYSCFG_IRMODE_UART4_TX SYSCFG_CR_IR_MODE_UART4_TX /**< 调制信号源于UART4_TX */
|
||
|
||
/* IR_OUT输出信号极性选择 */
|
||
#define SYSCFG_IRPOLARITY_DIRECT (0x00000000U) /**< IRTIM 输出信号未反相 */
|
||
#define SYSCFG_IRPOLARITY_INVERSE SYSCFG_CR_IR_POL /**< IRTIM 输出信号反相 */
|
||
|
||
/* 存储器映射选择位 */
|
||
#define SYSCFG_MEM_MODE_USER_FLASH SYSCFG_CR_MEM_MODE_USER_FLASH /**< 将User flash映射到地址0x0000 0000 */
|
||
#define SYSCFG_MEM_MODE_SYS_MEM SYSCFG_CR_MEM_MODE_SYS_MEM /**< 将System memory映射到地址0x0000 0000 */
|
||
#define SYSCFG_MEM_MODE_SRAM SYSCFG_CR_MEM_MODE_SRAM /**< 将SRAM映射到地址0x0000 0000 */
|
||
|
||
/* 6bit DAC输入参考电压源 */
|
||
#define SYSCFG_6BIT_DAC_VREFBUF (0x00000000U) /**< 选择VREFBUF作为输入电压源 */
|
||
#define SYSCFG_6BIT_DAC_VREFP (0x00000000U) /**< 选择VREF+引脚输入作为输入电压源 */
|
||
#define SYSCFG_6BIT_DAC_VDDA SYSCFG_CR_6BIT_DAC_REF /**< 选择内部VDDA电压作为输入电压源 */
|
||
|
||
/* 6bit DAC输出稳定时间 */
|
||
#define SYSCFG_6BIT_DAC_EN_DELAY (16U) /**< 6bit DAC输出稳定时间 */
|
||
|
||
/* PVD锁定控制位 */
|
||
#define SYSCFG_PVD_LOCK_ENABLE SYSCFG_SECCR_PVD_LOCK /**< 写保护锁定PMU_CR2寄存器 */
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/*-------------------------------------------functions------------------------------------------*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @defgroup SYSCFG_External_Functions SYSCFG External Functions
|
||
* @brief SYSCFG对外函数
|
||
* @{
|
||
*
|
||
*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @brief 配置IRTIM调制信号源
|
||
* @param ir_source 调制信号源选择
|
||
* @arg SYSCFG_IRMODE_TIM5_OC1: 调制信号源为TIM5的0C1
|
||
* @arg SYSCFG_IRMODE_USART1_TX:调制信号源为USART1
|
||
* @arg SYSCFG_IRMODE_UART4_TX: 调制信号源为UART4
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_set_ir_signal_source(uint32_t ir_source)
|
||
{
|
||
MODIFY_REG(SYSCFG->CR, SYSCFG_CR_IR_MODE, ir_source);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取IRTIM调制信号源
|
||
* @retval uint32_t 调制信号源
|
||
* @arg SYSCFG_IRMODE_TIM5_OC1: 调制信号源为TIM5的0C1
|
||
* @arg SYSCFG_IRMODE_USART1_TX:调制信号源为USART1
|
||
* @arg SYSCFG_IRMODE_UART4_TX: 调制信号源为UART4
|
||
*/
|
||
__STATIC_INLINE uint32_t std_syscfg_get_ir_signal_source(void)
|
||
{
|
||
return(SYSCFG->CR & SYSCFG_CR_IR_MODE);
|
||
}
|
||
|
||
/**
|
||
* @brief IR_OUT输出信号极性选择
|
||
* @param irpolarity 输出信号极性
|
||
* @arg SYSCFG_IRPOLARITY_DIRECT: 输出信号未反相
|
||
* @arg SYSCFG_IRPOLARITY_INVERSE: 输出信号反相
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_set_ir_polarity(uint32_t irpolarity)
|
||
{
|
||
MODIFY_REG(SYSCFG->CR, SYSCFG_CR_IR_POL, irpolarity);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取IR_OUT输出信号极性状态
|
||
* @retval bool 返回逻辑表达式的判断结果
|
||
* @arg true: 表示IRTIM输出信号反相
|
||
* @arg false:表示IRTIM输出信号未相反
|
||
*/
|
||
__STATIC_INLINE bool std_syscfg_get_ir_polarity(void)
|
||
{
|
||
return((SYSCFG->CR & SYSCFG_CR_IR_POL) == SYSCFG_CR_IR_POL);
|
||
}
|
||
|
||
/**
|
||
* @brief 配置存储器映射
|
||
* @param memory_mapping 存储器映射选择
|
||
* @arg SYSCFG_MEM_MODE_USER_FLASH:存储器映射到USER FLASH
|
||
* @arg SYSCFG_MEM_MODE_SYS_MEM:存储器映射到SYSTEM MEMORY
|
||
* @arg SYSCFG_MEM_MODE_SRAM:存储器映射到SRAM
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_set_memory_mapping(uint32_t memory_mapping)
|
||
{
|
||
MODIFY_REG(SYSCFG->CR, SYSCFG_CR_MEM_MODE, memory_mapping);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取存储器映射
|
||
* @retval uint32_t 存储器映射选择
|
||
* @arg SYSCFG_MEM_MODE_USER_FLASH:存储器映射到USER FLASH
|
||
* @arg SYSCFG_MEM_MODE_SYS_MEM:存储器映射到SYSTEM MEMORY
|
||
* @arg SYSCFG_MEM_MODE_SRAM:存储器映射到SRAM
|
||
*/
|
||
__STATIC_INLINE uint32_t std_syscfg_get_memory_mapping(void)
|
||
{
|
||
return(SYSCFG->CR & SYSCFG_CR_MEM_MODE);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能6bit DAC
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_6bit_dac_enable(void)
|
||
{
|
||
SYSCFG->CR |= SYSCFG_CR_6BIT_DAC_EN;
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止6bit DAC
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_6bit_dac_disable(void)
|
||
{
|
||
SYSCFG->CR &= (~SYSCFG_CR_6BIT_DAC_EN);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取6bit DAC使能状态
|
||
* @retval bool 返回逻辑表达式的判断结果
|
||
* @arg true: 表示使能6bit DAC
|
||
* @arg false:表示未使能6bit DAC
|
||
*/
|
||
__STATIC_INLINE bool std_syscfg_get_6bit_dac_enable(void)
|
||
{
|
||
return((SYSCFG->CR & SYSCFG_CR_6BIT_DAC_EN) == SYSCFG_CR_6BIT_DAC_EN);
|
||
}
|
||
|
||
/**
|
||
* @brief 配置6bit DAC输入参考电压源分压
|
||
* @param divide_voltage 输入参考电压源分压,范围为:0x00-0x3F
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_set_6bit_dac_divide_voltage (uint32_t divide_voltage)
|
||
{
|
||
MODIFY_REG(SYSCFG->CR, SYSCFG_CR_6BIT_DAC_DIV, divide_voltage << SYSCFG_CR_6BIT_DAC_DIV_POS);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取6bit DAC输入参考电压源分压
|
||
* @retval uint32_t 输入参考电压源分压,范围为:0x00-0x3F
|
||
*/
|
||
__STATIC_INLINE uint32_t std_syscfg_get_6bit_dac_divide_voltage (void)
|
||
{
|
||
return((SYSCFG->CR & SYSCFG_CR_6BIT_DAC_DIV) >> SYSCFG_CR_6BIT_DAC_DIV_POS);
|
||
}
|
||
|
||
/**
|
||
* @brief 配置6bit DAC输入参考电压源
|
||
* @param source 输入参考电压源选择
|
||
* @arg SYSCFG_6BIT_DAC_VREFBUF: 选择VREFBUF作为输入电压源
|
||
* @arg SYSCFG_6BIT_DAC_VREFP: 选择VREF+引脚输入作为输入电压源
|
||
* @arg SYSCFG_6BIT_DAC_VDDA: 选择VDDA电压
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_set_6bit_dac_reference_voltage(uint32_t source)
|
||
{
|
||
MODIFY_REG(SYSCFG->CR, SYSCFG_CR_6BIT_DAC_REF, source);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取6bit DAC输入参考电压源
|
||
* @retval uint32_t 输入参考电压源选择
|
||
* @arg SYSCFG_6BIT_DAC_VREFBUF: 选择VREFBUF作为输入电压源
|
||
* @arg SYSCFG_6BIT_DAC_VREFP: 选择VREF+引脚输入作为输入电压源
|
||
* @arg SYSCFG_6BIT_DAC_VDDA: 选择VDDA电压
|
||
*/
|
||
__STATIC_INLINE uint32_t std_syscfg_get_6bit_dac_reference_voltage(void)
|
||
{
|
||
return(SYSCFG->CR & SYSCFG_CR_6BIT_DAC_REF);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能PVD锁定
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_syscfg_pvd_lock_enable(void)
|
||
{
|
||
SYSCFG->SECCR |= SYSCFG_SECCR_PVD_LOCK;
|
||
}
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
#endif /* CIU32L051_STD_SYSCFG_H */
|