初始版本
This commit is contained in:
@@ -0,0 +1,470 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file adc.h
|
||||
**
|
||||
** Header file for AD Converter functions
|
||||
** @link ADC Group Some description @endlink
|
||||
**
|
||||
** - 2017-06-28 Alex First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup AdcGroup AD Converter (ADC)
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
#define ADC_SCAN_CH0_EN (0x1u) /*!< SCAN模式使用ADC CH0 */
|
||||
#define ADC_SCAN_CH1_EN (0x1u<<1) /*!< SCAN模式使用ADC CH1 */
|
||||
#define ADC_SCAN_CH2_EN (0x1u<<2) /*!< SCAN模式使用ADC CH2 */
|
||||
#define ADC_SCAN_CH3_EN (0x1u<<3) /*!< SCAN模式使用ADC CH3 */
|
||||
#define ADC_SCAN_CH4_EN (0x1u<<4) /*!< SCAN模式使用ADC CH4 */
|
||||
#define ADC_SCAN_CH5_EN (0x1u<<5) /*!< SCAN模式使用ADC CH5 */
|
||||
#define ADC_SCAN_CH6_EN (0x1u<<6) /*!< SCAN模式使用ADC CH6 */
|
||||
#define ADC_SCAN_CH7_EN (0x1u<<7) /*!< SCAN模式使用ADC CH7 */
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Global type definitions
|
||||
*****************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC转换模式
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_mode
|
||||
{
|
||||
AdcSglMode = 0u, /*!< 单输入通道单次转换模式 */
|
||||
AdcScanMode = 1u, /*!< 多输入通道顺序/插队扫描转换模式*/
|
||||
}en_adc_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC时钟分频选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_clk_sel
|
||||
{
|
||||
AdcMskClkDiv1 = 0u<<2, /*!< PCLK */
|
||||
AdcMskClkDiv2 = 1u<<2, /*!< 1/2 PCLK */
|
||||
AdcMskClkDiv4 = 2u<<2, /*!< 1/4 PCLK */
|
||||
AdcMskClkDiv8 = 3u<<2, /*!< 1/8 PCLK */
|
||||
} en_adc_clk_div_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC参考电压
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_ref_vol_sel
|
||||
{
|
||||
AdcMskRefVolSelInBgr1p5 = 0u<<9, /*!<内部参考电压1.5V(SPS<=200kHz)*/
|
||||
AdcMskRefVolSelInBgr2p5 = 1u<<9, /*!<内部参考电压2.5V(avdd>3V,SPS<=200kHz)*/
|
||||
AdcMskRefVolSelExtern1 = 2u<<9, /*!<外部输入(max avdd) PB01*/
|
||||
AdcMskRefVolSelAVDD = 3u<<9, /*!<AVDD*/
|
||||
}en_adc_ref_vol_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC转换通道选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_samp_ch_sel
|
||||
{
|
||||
AdcExInputCH0 = 0u, /*!<使用PA00*/
|
||||
AdcExInputCH1 = 1u, /*!<使用PA01*/
|
||||
AdcExInputCH2 = 2u, /*!<使用PA02*/
|
||||
AdcExInputCH3 = 3u, /*!<使用PA03*/
|
||||
AdcExInputCH4 = 4u, /*!<使用PA04*/
|
||||
AdcExInputCH5 = 5u, /*!<使用PA05*/
|
||||
AdcExInputCH6 = 6u, /*!<使用PA06*/
|
||||
AdcExInputCH7 = 7u, /*!<使用PA07*/
|
||||
AdcExInputCH8 = 8u, /*!<使用PB00*/
|
||||
AdcExInputCH9 = 9u, /*!<使用PB01*/
|
||||
AdcExInputCH10 = 10u, /*!<使用PC00*/
|
||||
AdcExInputCH11 = 11u, /*!<使用PC01*/
|
||||
AdcExInputCH12 = 12u, /*!<使用PC02*/
|
||||
AdcExInputCH13 = 13u, /*!<使用PC03*/
|
||||
AdcExInputCH14 = 14u, /*!<使用PC04*/
|
||||
AdcExInputCH15 = 15u, /*!<使用PC05*/
|
||||
AdcExInputCH16 = 16u, /*!<使用PB02*/
|
||||
AdcExInputCH17 = 17u, /*!<使用PB10*/
|
||||
AdcExInputCH18 = 18u, /*!<使用PB11*/
|
||||
AdcExInputCH19 = 19u, /*!<使用PB12*/
|
||||
AdcExInputCH20 = 20u, /*!<使用PB13*/
|
||||
AdcExInputCH21 = 21u, /*!<使用PB14*/
|
||||
AdcExInputCH22 = 22u, /*!<使用PB15*/
|
||||
AdcExInputCH23 = 23u, /*!<使用PE15*/
|
||||
AdcExInputCH24 = 24u, /*!<使用PE14*/
|
||||
AdcExInputCH25 = 25u, /*!<使用PE13*/
|
||||
|
||||
AdcDacInput = 26u, /*!<使用DAC输出(必须使用输入增益)*/
|
||||
AdcAVccdiv3Input = 27u, /*!<使用1/3 AVCC(必须使用输入增益)*/
|
||||
AdcAiTsInput = 28u, /*!<使用内置温度传感器BGR_TS(必须使用输入增益)*/
|
||||
AdcVref1_2Input = 29u, /*!<使用内部基准1.2V(必须使用输入增益)*/
|
||||
|
||||
}en_adc_samp_ch_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC输入信号放大器控制
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_op_buf
|
||||
{
|
||||
AdcMskBufEnable = 1u<<11, /*!< 打开放大器BUF */
|
||||
AdcMskBufDisable = 0u, /*!< 关闭放大器BUF */
|
||||
} en_adc_op_buf_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC采样周期选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_samp_cycle_sel
|
||||
{
|
||||
AdcMskSampCycle4Clk = 0u<<12, /*!<4个采样时钟*/
|
||||
AdcMskSampCycle6Clk = 1u<<12, /*!<6个采样时钟*/
|
||||
AdcMskSampCycle8Clk = 2u<<12, /*!<8个采样时钟*/
|
||||
AdcMskSampCycle12Clk = 3u<<12, /*!<12个采样时钟*/
|
||||
|
||||
}en_adc_samp_cycle_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC内部参考电压使能控制
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_in_ref
|
||||
{
|
||||
AdcMskInRefEnable = 1u<<14, /*!< 内部参考电压使能 */
|
||||
AdcMskInRefDisable = 0u, /*!< 内部参考电压关闭 */
|
||||
}en_adc_in_ref_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC周边模块反射源选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_trig_sel
|
||||
{
|
||||
AdcMskTrigTimer0 = 1u<<0, /*!<选择timer0中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer1 = 1u<<1, /*!<选择timer1中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer2 = 1u<<2, /*!<选择timer2中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer3 = 1u<<3, /*!<选择timer3中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer4 = 1u<<4, /*!<选择timer4中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer5 = 1u<<5, /*!<选择timer5中断源,自动触发ADC采样*/
|
||||
AdcMskTrigTimer6 = 1u<<6, /*!<选择timer6中断源,自动触发ADC采样*/
|
||||
AdcMskTrigUart0 = 1u<<7, /*!<选择uart0中断源,自动触发ADC采样*/
|
||||
AdcMskTrigUart1 = 1u<<8, /*!<选择uart1中断源,自动触发ADC采样*/
|
||||
AdcMskTrigLpuart0 = 1u<<9, /*!<选择lpuart0中断源,自动触发ADC采样*/
|
||||
AdcMskTrigLpuart1 = 1u<<10, /*!<选择lpuart1中断源,自动触发ADC采样*/
|
||||
AdcMskTrigVC0 = 1u<<11, /*!<选择VC0中断源,自动触发ADC采样*/
|
||||
AdcMskTrigVC1 = 1u<<12, /*!<选择VC1中断源,自动触发ADC采样*/
|
||||
AdcMskTrigRTC = 1u<<13, /*!<选择RTC中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPCA = 1u<<14, /*!<选择PCA中断源,自动触发ADC采样*/
|
||||
AdcMskTrigSPI0 = 1u<<15, /*!<选择SPI0中断源,自动触发ADC采样*/
|
||||
AdcMskTrigSPI1 = 1u<<16, /*!<选择SPI1中断源,自动触发ADC采样*/
|
||||
AdcMskTrigDMA = 1u<<17, /*!<选择DMA中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPA03 = 1u<<18, /*!<选择PA03中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPB03 = 1u<<19, /*!<选择PB03中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPC03 = 1u<<20, /*!<选择PC03中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPD03 = 1u<<21, /*!<选择PD03中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPA07 = 1u<<22, /*!<选择PA07中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPB07 = 1u<<23, /*!<选择PB07中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPC07 = 1u<<24, /*!<选择PC07中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPD07 = 1u<<25, /*!<选择PD07中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPA11 = 1u<<26, /*!<选择PA11中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPB11 = 1u<<27, /*!<选择PB11中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPC11 = 1u<<28, /*!<选择PC11中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPA15 = 1u<<29, /*!<选择PA15中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPB15 = 1u<<30, /*!<选择PB15中断源,自动触发ADC采样*/
|
||||
AdcMskTrigPC15 = 1u<<31, /*!<选择PC15中断源,自动触发ADC采样*/
|
||||
}en_adc_trig_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC外部触发源寄存器选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_ext_trig_sel
|
||||
{
|
||||
AdcExtTrig0 = 0u, /*!<单次及顺序扫描转换 外部触发源选择寄存器*/
|
||||
AdcExtTrig1 = 1u, /*!<插队扫描转换 外部触发源选择寄存器*/
|
||||
}en_adc_ext_trig_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC顺序转换通道
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_sqr_chmux
|
||||
{
|
||||
AdcSQRCH0MUX = 0u, /*!<顺序扫描模式转换通道0*/
|
||||
AdcSQRCH1MUX = 1u, /*!<顺序扫描模式转换通道1*/
|
||||
AdcSQRCH2MUX = 2u, /*!<顺序扫描模式转换通道2*/
|
||||
AdcSQRCH3MUX = 3u, /*!<顺序扫描模式转换通道3*/
|
||||
AdcSQRCH4MUX = 4u, /*!<顺序扫描模式转换通道4*/
|
||||
AdcSQRCH5MUX = 5u, /*!<顺序扫描模式转换通道5*/
|
||||
AdcSQRCH6MUX = 6u, /*!<顺序扫描模式转换通道6*/
|
||||
AdcSQRCH7MUX = 7u, /*!<顺序扫描模式转换通道7*/
|
||||
AdcSQRCH8MUX = 8u, /*!<顺序扫描模式转换通道8*/
|
||||
AdcSQRCH9MUX = 9u, /*!<顺序扫描模式转换通道9*/
|
||||
AdcSQRCH10MUX = 10u, /*!<顺序扫描模式转换通道10*/
|
||||
AdcSQRCH11MUX = 11u, /*!<顺序扫描模式转换通道11*/
|
||||
AdcSQRCH12MUX = 12u, /*!<顺序扫描模式转换通道12*/
|
||||
AdcSQRCH13MUX = 13u, /*!<顺序扫描模式转换通道13*/
|
||||
AdcSQRCH14MUX = 14u, /*!<顺序扫描模式转换通道14*/
|
||||
AdcSQRCH15MUX = 15u, /*!<顺序扫描模式转换通道15*/
|
||||
}en_adc_sqr_chmux_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC插队转换通道
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_jqr_chmux
|
||||
{
|
||||
AdcJQRCH0MUX = 0u, /*!<转换通道0*/
|
||||
AdcJQRCH1MUX = 1u, /*!<转换通道1*/
|
||||
AdcJQRCH2MUX = 2u, /*!<转换通道2*/
|
||||
AdcJQRCH3MUX = 3u, /*!<转换通道3*/
|
||||
}en_adc_jqr_chmux_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC结果对齐方式
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_align
|
||||
{
|
||||
AdcAlignRight = 0u,
|
||||
AdcAlignLeft = 1u,
|
||||
}en_adc_align_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC转换结果自动累加功能
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_result_acc
|
||||
{
|
||||
AdcResultAccEnable = 1u,
|
||||
AdcResultAccDisable = 0u,
|
||||
}en_adc_result_acc_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC中断类型定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_adc_irq_type
|
||||
{
|
||||
AdcMskIrqJqr = 1u<<5, /*!<ADC插队扫描转换完成*/
|
||||
AdcMskIrqSqr = 1u<<4, /*!<ADC顺序扫描转换完成*/
|
||||
AdcMskIrqReg = 1u<<3, /*!<ADC转换结果比较区间内*/
|
||||
AdcMskIrqHt = 1u<<2, /*!<ADC转换结果高于HT*/
|
||||
AdcMskIrqLt = 1u<<1, /*!<ADC转换结果低于LT*/
|
||||
AdcMskIrqSgl = 1u<<0, /*!<ADC单次转换完成*/
|
||||
|
||||
}en_adc_irq_type_t;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Extern type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC初始化配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_adc_cfg
|
||||
{
|
||||
en_adc_mode_t enAdcMode; /*! ADC转换模式*/
|
||||
|
||||
en_adc_clk_div_t enAdcClkDiv; /*! ADC时钟选择*/
|
||||
en_adc_samp_cycle_sel_t enAdcSampCycleSel; /*! ADC采样周期选择*/
|
||||
en_adc_ref_vol_sel_t enAdcRefVolSel; /*! ADC参考电压选择*/
|
||||
en_adc_op_buf_t enAdcOpBuf; /*! ADC输入信号放大器控制使能*/
|
||||
en_adc_in_ref_t enInRef; /*! ADC内部参考电压使能*/
|
||||
|
||||
en_adc_align_t enAdcAlign; /*! ADC转换结果对齐控制*/
|
||||
}stc_adc_cfg_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC顺序扫描模式配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_adc_sqr_cfg
|
||||
{
|
||||
uint8_t u8SqrCnt; /*! ADC顺序扫描转换次数*/
|
||||
en_adc_result_acc_t enResultAcc; /*! ADC转换结果自动累加功能*/
|
||||
boolean_t bSqrDmaTrig; /*! ADC顺序扫描转换完成DMA触发使能*/
|
||||
}stc_adc_sqr_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC插队扫描模式配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_adc_jqr_cfg
|
||||
{
|
||||
uint8_t u8JqrCnt; /*! ADC顺序扫描转换次数*/
|
||||
boolean_t bJqrDmaTrig; /*! ADC插队扫描转换完成DMA触发使能*/
|
||||
}stc_adc_jqr_cfg_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADC比较功能配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_adc_threshold_cfg
|
||||
{
|
||||
boolean_t bAdcRegCmp ; /*!ADC区间使能*/
|
||||
boolean_t bAdcHtCmp ; /*!ADC上超出区间使能*/
|
||||
boolean_t bAdcLtCmp ; /*!ADC下超出区间使能*/
|
||||
|
||||
uint32_t u32AdcHighThd; /*!ADC比较上阈值*/
|
||||
uint32_t u32AdcLowThd; /*!ADC比较下阈值*/
|
||||
|
||||
en_adc_samp_ch_sel_t enSampChSel; /*!ADC采样通道选择*/
|
||||
|
||||
}stc_adc_threshold_cfg_t;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//ADC 初始化
|
||||
en_result_t Adc_Init(stc_adc_cfg_t* pstcAdcCfg);
|
||||
|
||||
//ADC 中断使能
|
||||
void Adc_EnableIrq(void);
|
||||
//ADC 中断禁止
|
||||
void Adc_DisableIrq(void);
|
||||
|
||||
//ADC 中断/采样完成状态获取
|
||||
boolean_t Adc_GetIrqStatus(en_adc_irq_type_t enAdcIrq);
|
||||
//ADC 中断/采样完成状态清除
|
||||
void Adc_ClrIrqStatus(en_adc_irq_type_t enAdcIrq);
|
||||
|
||||
//ADC 使能
|
||||
void Adc_Enable(void);
|
||||
//ADC 禁止
|
||||
void Adc_Disable(void);
|
||||
|
||||
//ADC 顺序扫描模式配置
|
||||
en_result_t Adc_SqrModeCfg(stc_adc_sqr_cfg_t* pstcAdcSqrCfg);
|
||||
//ADC 插队扫描模式配置
|
||||
en_result_t Adc_JqrModeCfg(stc_adc_jqr_cfg_t* pstcAdcJqrCfg);
|
||||
|
||||
//ADC Sgl 单次转换模式通道选择配置
|
||||
en_result_t Adc_CfgSglChannel( en_adc_samp_ch_sel_t enstcAdcSampCh);
|
||||
//ADC SQR 顺序扫描转换模式通道选择配置
|
||||
en_result_t Adc_CfgSqrChannel(en_adc_sqr_chmux_t enstcAdcSqrChMux, en_adc_samp_ch_sel_t enstcAdcSampCh);
|
||||
//ADC JQR 插队扫描转换模式通道选择配置
|
||||
en_result_t Adc_CfgJqrChannel(en_adc_jqr_chmux_t enstcAdcJqrChMux, en_adc_samp_ch_sel_t enstcAdcSampCh);
|
||||
|
||||
///<ADC 单次转换外部触发源配置
|
||||
void Adc_SglExtTrigCfg(en_adc_trig_sel_t enAdcTrigSel, boolean_t bValue);
|
||||
///<ADC 顺序扫描转换外部触发源配置
|
||||
void Adc_SqrExtTrigCfg(en_adc_trig_sel_t enAdcTrigSel, boolean_t bValue);
|
||||
///<ADC 插队扫描转换外部触发源配置
|
||||
void Adc_JqrExtTrigCfg(en_adc_trig_sel_t enAdcTrigSel, boolean_t bValue);
|
||||
|
||||
//ADC 阈值比较功能配置
|
||||
void Adc_ThresholdCfg(stc_adc_threshold_cfg_t* pstcAdcThrCfg);
|
||||
|
||||
//ADC 单次转换模式启动
|
||||
void Adc_SGL_Start(void);
|
||||
//ADC 单次转换模式停止
|
||||
void Adc_SGL_Stop(void);
|
||||
|
||||
//ADC 单次转换模式一直转换模式启动
|
||||
void Adc_SGL_Always_Start(void);
|
||||
//ADC 单次转换模式一直转换模式停止
|
||||
void Adc_SGL_Always_Stop(void);
|
||||
|
||||
//ADC 顺序扫描转换模式启动
|
||||
void Adc_SQR_Start(void);
|
||||
//ADC 顺序扫描转换模式停止
|
||||
void Adc_SQR_Stop(void);
|
||||
|
||||
//ADC 插队扫描转换模式启动
|
||||
void Adc_JQR_Start(void);
|
||||
//ADC 插队扫描转换模式停止
|
||||
void Adc_JQR_Stop(void);
|
||||
|
||||
//获取单次转换采样值
|
||||
uint32_t Adc_GetSglResult(void);
|
||||
//获取顺序扫描采样值
|
||||
uint32_t Adc_GetSqrResult(en_adc_sqr_chmux_t enstcAdcSqrChMux);
|
||||
//获取插队扫描采样值
|
||||
uint32_t Adc_GetJqrResult(en_adc_jqr_chmux_t enstcAdcJqrChMux);
|
||||
|
||||
//获取累加采样值
|
||||
uint32_t Adc_GetAccResult(void);
|
||||
//clear ADC 累加寄存器结果清除
|
||||
void Adc_ClrAccResult(void);
|
||||
|
||||
//@}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ADC_H__ */
|
||||
/******************************************************************************/
|
||||
/* EOF (not truncated) */
|
||||
/******************************************************************************/
|
||||
@@ -0,0 +1,878 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file adt.h
|
||||
**
|
||||
** Headerfile for Advance Timer functions
|
||||
** @link ADT Group Some description @endlink
|
||||
**
|
||||
** - 2018-04-19 Husj First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __ADT_H__
|
||||
#define __ADT_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup AdtGroup Advance Timer (ADT)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT CHx通道定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_adt_CHxX_port
|
||||
{
|
||||
AdtCHxA = 0u, ///< CHx A通道
|
||||
AdtCHxB = 1u, ///< CHx B通道
|
||||
}en_adt_CHxX_port_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT TRIG端口定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_adt_trig_port
|
||||
{
|
||||
AdtTrigA = 0u, ///< TIMx 触发A端口
|
||||
AdtTrigB = 1u, ///< TIMx 触发B端口
|
||||
AdtTrigC = 2u, ///< TIMx 触发C端口
|
||||
AdtTrigD = 3u, ///< TIMx 触发D端口
|
||||
}en_adt_trig_port_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT通用控制 - Z相输入屏蔽周期数
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_gconr_zmsk
|
||||
{
|
||||
AdtZMaskDis = 0u, ///< Z相输入屏蔽功能无效
|
||||
AdtZMask4Cyl = 1u, ///< 位置计数上溢后或下溢后的4个计数周期内的Z相输入被屏蔽
|
||||
AdtZMask8Cyl = 2u, ///< 位置计数上溢后或下溢后的8个计数周期内的Z相输入被屏蔽
|
||||
AdtZMask16Cyl = 3u, ///< 位置计数上溢后或下溢后的16个计数周期内的Z相输入被屏蔽
|
||||
}en_adt_gconr_zmsk_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT通用控制 - 计数时钟选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_cnt_ckdiv
|
||||
{
|
||||
AdtClkPClk0 = 0u, ///< PCLK0
|
||||
AdtClkPClk0Div2 = 1u, ///< PCLK0/2
|
||||
AdtClkPClk0Div4 = 2u, ///< PCLK0/4
|
||||
AdtClkPClk0Div8 = 3u, ///< PCLK0/8
|
||||
AdtClkPClk0Div16 = 4u, ///< PCLK0/16
|
||||
AdtClkPClk0Div64 = 5u, ///< PCLK0/64
|
||||
AdtClkPClk0Div256 = 6u, ///< PCLK0/256
|
||||
AdtClkPClk0Div1024 = 7u, ///< PCLK0/1024
|
||||
}en_adt_cnt_ckdiv_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT计数模式
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_cnt_mode
|
||||
{
|
||||
AdtSawtoothMode = 0u, ///< 锯齿波模式
|
||||
AdtTriangleModeA = 4u, ///< 三角波A模式
|
||||
AdtTriangleModeB = 5u, ///< 三角波B模式
|
||||
}en_adt_cnt_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT计数方向
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_cnt_dir
|
||||
{
|
||||
AdtCntDown = 0u, ///< 递减计数
|
||||
AdtCntUp = 1u, ///< 递加计数
|
||||
}en_adt_cnt_dir_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT通用比较基准
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_compare
|
||||
{
|
||||
AdtCompareA = 0u, ///< 通用比较基准A
|
||||
AdtCompareB = 1u, ///< 通用比较基准B
|
||||
AdtCompareC = 2u, ///< 通用比较基准C
|
||||
AdtCompareD = 3u, ///< 通用比较基准D
|
||||
}en_adt_compare_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT专用比较基准
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_special_compare
|
||||
{
|
||||
AdtSpclCompA = 0u, ///< 专用比较基准A
|
||||
AdtSpclCompB = 1u, ///< 专用比较基准B
|
||||
}en_adt_special_compare_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - TIMx输出状态控制
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_disval
|
||||
{
|
||||
AdtTIMxDisValNorm = 0u, ///< 强制输出无效条件0~3中被选择的条件成立时,CHx端口正常输出
|
||||
AdtTIMxDisValHiZ = 1u, ///< 强制输出无效条件0~3中被选择的条件成立时,CHx端口输出高阻态
|
||||
AdtTIMxDisValLow = 2u, ///< 强制输出无效条件0~3中被选择的条件成立时,CHx端口输出低电平
|
||||
AdtTIMxDisValHigh = 3u, ///< 强制输出无效条件0~3中被选择的条件成立时,CHx端口输出高电平
|
||||
}en_adt_pconr_disval_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx强制输出无效条件选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_dissel
|
||||
{
|
||||
AdtCHxDisSel0 = 0u, ///< 选择强制输出无效条件0
|
||||
AdtCHxDisSel1 = 1u, ///< 选择强制输出无效条件1
|
||||
AdtCHxDisSel2 = 2u, ///< 选择强制输出无效条件2
|
||||
AdtCHxDisSel3 = 3u, ///< 选择强制输出无效条件3
|
||||
}en_adt_pconr_dissel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx周期值匹配时端口状态设定
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_perc
|
||||
{
|
||||
AdtCHxPeriodLow = 0u, ///< 计数器计数值与周期值相等时,CHx端口输出保持为低电平
|
||||
AdtCHxPeriodHigh = 1u, ///< 计数器计数值与周期值相等时,CHx端口输出设定为高电平
|
||||
AdtCHxPeriodKeep = 2u, ///< 计数器计数值与周期值相等时,CHx端口输出设定为先前状态
|
||||
AdtCHxPeriodInv = 3u, ///< 计数器计数值与周期值相等时,CHx端口输出设定为反转电平
|
||||
}en_adt_pconr_perc_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx比较值匹配时端口状态设定
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_cmpc
|
||||
{
|
||||
AdtCHxCompareLow = 0u, ///< 计数器计数值与GCMxR相等时,CHx端口输出保持为低电平
|
||||
AdtCHxCompareHigh = 1u, ///< 计数器计数值与GCMxR相等时,CHx端口输出设定为高电平
|
||||
AdtCHxCompareKeep = 2u, ///< 计数器计数值与GCMxR相等时,CHx端口输出设定为先前状态
|
||||
AdtCHxCompareInv = 3u, ///< 计数器计数值与GCMxR相等时,CHx端口输出设定为反转电平
|
||||
}en_adt_pconr_cmpc_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx端口输出
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_port_out
|
||||
{
|
||||
AdtCHxPortOutLow = 0u, ///< CHx端口输出设定为低电平
|
||||
AdtCHxPortOutHigh = 1u, ///< CHx端口输出设定为高电平
|
||||
}en_adt_pconr_port_out_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx端口功能模式选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_capc
|
||||
{
|
||||
AdtCHxCompareOutput = 0u, ///< CHx端口设定为比较输出功能
|
||||
AdtCHxCompareInput = 1u, ///< CHx端口设定为捕获输入功能
|
||||
}en_adt_pconr_capc_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口控制 - CHx计数开始停止端口状态选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pconr_stastps
|
||||
{
|
||||
AdtCHxStateSelSS = 0u, ///< 计数开始或停止时,CHx端口输出由STACB、STPCB决定
|
||||
AdtCHxStateSelKeep = 1u, ///< 计数开始或停止时,CHx端口输出设定为先前状态
|
||||
}en_adt_pconr_stastps_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT死区控制 - CHx死区分离设定
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_dconr_sepa
|
||||
{
|
||||
AdtCHxDtSeperate = 0u, ///< DTUAR和DTDAR分别设定
|
||||
AdtCHxDtEqual = 1u, ///< DTDAR的值和DTUAR的值自动相等
|
||||
}en_adt_dconr_sepa_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT滤波控制 - TRIx/TIMxIx端口滤波采样基准时钟选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_fconr_nofick
|
||||
{
|
||||
AdtFltClkPclk0 = 0u, ///< PCLK0
|
||||
AdtFltClkPclk0Div4 = 1u, ///< PCLK0/4
|
||||
AdtFltClkPclk0Div16 = 2u, ///< PCLK0/16
|
||||
AdtFltClkPclk0Div64 = 3u, ///< PCLK0/64
|
||||
}en_adt_fconr_nofick_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT有效周期 - TIMx有效周期选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_vperr_pcnts
|
||||
{
|
||||
AdtPeriodCnts0 = 0u, ///< 有效周期选择功能无效
|
||||
AdtPeriodCnts1 = 1u, ///< 每隔1个周期有效一次
|
||||
AdtPeriodCnts2 = 2u, ///< 每隔2个周期有效一次
|
||||
AdtPeriodCnts3 = 3u, ///< 每隔3个周期有效一次
|
||||
AdtPeriodCnts4 = 4u, ///< 每隔4个周期有效一次
|
||||
AdtPeriodCnts5 = 5u, ///< 每隔5个周期有效一次
|
||||
AdtPeriodCnts6 = 6u, ///< 每隔6个周期有效一次
|
||||
AdtPeriodCnts7 = 7u, ///< 每隔7个周期有效一次
|
||||
}en_adt_vperr_pcnts_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT有效周期 - 计数条件选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_vperr_pcnte
|
||||
{
|
||||
AdtPeriodCnteDisable = 0u, ///< 有效周期选择功能无效
|
||||
AdtPeriodCnteMin = 1u, ///< 锯齿波计数上、下溢点或三角波波谷做为计数条件
|
||||
AdtPeriodCnteMax = 2u, ///< 锯齿波计数上、下溢点或三角波波峰做为计数条件
|
||||
AdtPeriodCnteBoth = 3u, ///< 锯齿波计数上、下溢点或三角波波峰,波谷做为计数条件
|
||||
}en_adt_vperr_pcnte_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口触发控制 - 触发源选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_ttrig_trigxs
|
||||
{
|
||||
AdtTrigxSelPA3 = 0u, ///< PA3
|
||||
AdtTrigxSelPB3 = 1u, ///< PB3
|
||||
AdtTrigxSelPC3 = 2u, ///< PC3
|
||||
AdtTrigxSelPD3 = 3u, ///< PD3
|
||||
AdtTrigxSelPA7 = 4u, ///< PA7
|
||||
AdtTrigxSelPB7 = 5u, ///< PB7
|
||||
AdtTrigxSelPC7 = 6u, ///< PC7
|
||||
AdtTrigxSelPD7 = 7u, ///< PD7
|
||||
AdtTrigxSelPA11 = 8u, ///< PA11
|
||||
AdtTrigxSelPB11 = 9u, ///< PB11
|
||||
AdtTrigxSelPC11 = 10u, ///< PC11
|
||||
AdtTrigxSelPD1 = 11u, ///< PD1
|
||||
AdtTrigxSelPA15 = 12u, ///< PA15
|
||||
AdtTrigxSelPB15 = 13u, ///< PB15
|
||||
AdtTrigxSelPC5 = 14u, ///< PC5
|
||||
AdtTrigxSelPD5 = 15u, ///< PD5
|
||||
}en_adt_ttrig_trigxs_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT AOS触发控制 - AOSx触发源选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_itrig_iaosxs
|
||||
{
|
||||
AdtAosxTrigSelTim0Int = 0u, ///< TIM0_INT
|
||||
AdtAosxTrigSelTim1Int = 1u, ///< TIM1_INT
|
||||
AdtAosxTrigSelTim2Int = 2u, ///< TIM2_INT
|
||||
AdtAosxTrigSelLpTimInt = 3u, ///< LPTIMER_INT
|
||||
AdtAosxTrigSelTim4Int = 4u, ///< TIM4_INT
|
||||
AdtAosxTrigSelTim5Int = 5u, ///< TIM5_INT
|
||||
AdtAosxTrigSelTim6Int = 6u, ///< TIM6_INT
|
||||
AdtAosxTrigSelUart0Int = 7u, ///< UART0_INT
|
||||
AdtAosxTrigSelUart1Int = 8u, ///< UART1_INT
|
||||
AdtAosxTrigSelLpUartInt = 9u, ///< LPUART_INT
|
||||
AdtAosxTrigSelVc0Int = 10u, ///< VC0_INT
|
||||
AdtAosxTrigSelVc1Int = 11u, ///< VC1_INT
|
||||
AdtAosxTrigSelRtcInt = 12u, ///< RTC_INT
|
||||
AdtAosxTrigSelPcaInt = 13u, ///< PCA_INT
|
||||
AdtAosxTrigSelSpiInt = 14u, ///< SPI_INT
|
||||
AdtAosxTrigSelAdcInt = 15u, ///< ADC_INT
|
||||
}en_adt_itrig_iaosxs_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT硬件(启动/停止/清零/捕获)事件触发选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_adt_hw_trig
|
||||
{
|
||||
AdtHwTrigAos0 = 0u, ///< 从AOS来的事件触发0有效
|
||||
AdtHwTrigAos1 = 1u, ///< 从AOS来的事件触发1有效
|
||||
AdtHwTrigAos2 = 2u, ///< 从AOS来的事件触发2有效
|
||||
AdtHwTrigAos3 = 3u, ///< 从AOS来的事件触发3有效
|
||||
AdtHwTrigCHxARise = 4u, ///< CHxA端口上采样到上升沿
|
||||
AdtHwTrigCHxAFall = 5u, ///< CHxA端口上采样到下降沿
|
||||
AdtHwTrigCHxBRise = 6u, ///< CHxB端口上采样到上升沿
|
||||
AdtHwTrigCHxBFall = 7u, ///< CHxB端口上采样到下降沿
|
||||
AdtHwTrigTimTriARise = 8u, ///< TIMTRIA端口上采样到上升沿
|
||||
AdtHwTrigTimTriAFall = 9u, ///< TIMTRIA端口上采样到下降沿
|
||||
AdtHwTrigTimTriBRise = 10u, ///< TIMTRIB端口上采样到上升沿
|
||||
AdtHwTrigTimTriBFall = 11u, ///< TIMTRIB端口上采样到下降沿
|
||||
AdtHwTrigTimTriCRise = 12u, ///< TIMTRIC端口上采样到上升沿
|
||||
AdtHwTrigTimTriCFall = 13u, ///< TIMTRIC端口上采样到下降沿
|
||||
AdtHwTrigTimTriDRise = 14u, ///< TIMTRID端口上采样到上升沿
|
||||
AdtHwTrigTimTriDFall = 15u, ///< TIMTRID端口上采样到下降沿
|
||||
AdtHwTrigEnd = 16u,
|
||||
}en_adt_hw_trig_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT硬件(递加/递减)事件触发选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_adt_hw_cnt
|
||||
{
|
||||
AdtHwCntCHxALowCHxBRise = 0u, ///< CHxA端口为低电平时,CHxB端口上采样到上升沿
|
||||
AdtHwCntCHxALowCHxBFall = 1u, ///< CHxA端口为低电平时,CHxB端口上采样到下降沿
|
||||
AdtHwCntCHxAHighCHxBRise = 2u, ///< CHxA端口为高电平时,CHxB端口上采样到上升沿
|
||||
AdtHwCntCHxAHighCHxBFall = 3u, ///< CHxA端口为高电平时,CHxB端口上采样到下降沿
|
||||
AdtHwCntCHxBLowCHxARise = 4u, ///< CHxB端口为低电平时,CHxA端口上采样到上升沿
|
||||
AdtHwCntCHxBLowCHxAFall = 5u, ///< CHxB端口为低电平时,CHxA端口上采样到下降沿
|
||||
AdtHwCntCHxBHighChxARise = 6u, ///< CHxB端口为高电平时,CHxA端口上采样到上升沿
|
||||
AdtHwCntCHxBHighCHxAFall = 7u, ///< CHxB端口为高电平时,CHxA端口上采样到下降沿
|
||||
AdtHwCntTimTriARise = 8u, ///< TIMTRIA端口上采样到上升沿
|
||||
AdtHwCntTimTriAFall = 9u, ///< TIMTRIA端口上采样到下降沿
|
||||
AdtHwCntTimTriBRise = 10u, ///< TIMTRIB端口上采样到上升沿
|
||||
AdtHwCntTimTriBFall = 11u, ///< TIMTRIB端口上采样到下降沿
|
||||
AdtHwCntTimTriCRise = 12u, ///< TIMTRIC端口上采样到上升沿
|
||||
AdtHwCntTimTriCFall = 13u, ///< TIMTRIC端口上采样到下降沿
|
||||
AdtHwCntTimTriDRise = 14u, ///< TIMTRID端口上采样到上升沿
|
||||
AdtHwCntTimTriDFall = 15u, ///< TIMTRID端口上采样到下降沿
|
||||
AdtHwCntAos0 = 16u, ///< 从AOS来的事件触发0有效
|
||||
AdtHwCntAos1 = 17u, ///< 从AOS来的事件触发1有效
|
||||
AdtHwCntAos2 = 18u, ///< 从AOS来的事件触发2有效
|
||||
AdtHwCntAos3 = 19u, ///< 从AOS来的事件触发3有效
|
||||
AdtHwCntMax = 20u,
|
||||
}en_adt_hw_cnt_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT端口刹车极性控制
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_ptbrk_polarity
|
||||
{
|
||||
AdtPtBrkHigh = 0u, ///< 端口刹车极性高电平有效
|
||||
AdtPtBrkLow = 1u, ///< 端口刹车极性低电平有效
|
||||
}en_adt_ptbrk_polarity_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT PWM展频计数选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_adt_pwm_dither_type
|
||||
{
|
||||
AdtPwmDitherUnderFlow = 0u, ///< PWM展频计数下溢出
|
||||
AdtPwmDitherOverFlow = 1u, ///< PWM展频计数上溢出
|
||||
}en_adt_pwm_dither_type_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT中断类型
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_adt_irq_type
|
||||
{
|
||||
AdtCMAIrq = 0u, ///< 计数匹配A(或捕获输入)中断
|
||||
AdtCMBIrq = 1u, ///< 计数匹配B(或捕获输入)中断
|
||||
AdtCMCIrq = 2u, ///< 计数匹配C中断
|
||||
AdtCMDIrq = 3u, ///< 计数匹配D中断
|
||||
AdtOVFIrq = 6u, ///< 上溢匹配中断
|
||||
AdtUDFIrq = 7u, ///< 下溢匹配中断
|
||||
AdtDTEIrq = 8u, ///< 死区时间错误中断
|
||||
AdtSAMLIrq = 14u, ///< 同低中断
|
||||
AdtSAMHIrq = 15u, ///< 同高中断
|
||||
}en_adt_irq_type_t;
|
||||
|
||||
typedef enum en_adt_state_type
|
||||
{
|
||||
AdtCMAF = 0, ///< 计数匹配A标志
|
||||
AdtCMBF = 1, ///< 计数匹配B标志
|
||||
AdtCMCF = 2, ///< 计数匹配C标志
|
||||
AdtCMDF = 3, ///< 计数匹配D标志
|
||||
AdtOVFF = 6, ///< 上溢匹配标志
|
||||
AdtUDFF = 7, ///< 下溢匹配标志
|
||||
AdtDTEF = 8, ///< 死区时间错误标志
|
||||
AdtCMSAUF = 9, ///< 向上计数专用比较基准值匹配A标志
|
||||
AdtCMSADF = 10, ///< 向下计数专用比较基准值匹配B标志
|
||||
AdtCMSBUF = 11, ///< 向上计数专用比较基准值匹配A标志
|
||||
AdtCMSBDF = 12, ///< 向下计数专用比较基准值匹配B标志
|
||||
AdtCntDir = 31, ///< 计数方向
|
||||
}en_adt_state_type_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT软件同步配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_sw_sync
|
||||
{
|
||||
boolean_t bAdTim4; ///< Timer 4
|
||||
boolean_t bAdTim5; ///< Timer 5
|
||||
boolean_t bAdTim6; ///< Timer 6
|
||||
|
||||
}stc_adt_sw_sync_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT AOS触发配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_aos_trig_cfg
|
||||
{
|
||||
en_adt_itrig_iaosxs_t enAos0TrigSrc; ///< AOS0触发源选择
|
||||
en_adt_itrig_iaosxs_t enAos1TrigSrc; ///< AOS1触发源选择
|
||||
en_adt_itrig_iaosxs_t enAos2TrigSrc; ///< AOS2触发源选择
|
||||
en_adt_itrig_iaosxs_t enAos3TrigSrc; ///< AOS3触发源选择
|
||||
}stc_adt_aos_trig_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT 中断触发配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_irq_trig_cfg
|
||||
{
|
||||
boolean_t bAdtSpecilMatchBTrigDmaEn; ///< 专用比较基准值匹配B使能触发DMA
|
||||
boolean_t bAdtSpecilMatchATrigDmaEn; ///< 专用比较基准值匹配A使能触发DMA
|
||||
boolean_t bAdtUnderFlowTrigDmaEn; ///< 下溢匹配使能触发DMA
|
||||
boolean_t bAdtOverFlowTrigDmaEn; ///< 上溢匹配使能触发DMA
|
||||
boolean_t bAdtCntMatchDTrigDmaEn; ///< 计数匹配D使能触发DMA
|
||||
boolean_t bAdtCntMatchCTrigDmaEn; ///< 计数匹配C使能触发DMA
|
||||
boolean_t bAdtCntMatchBTrigDmaEn; ///< 计数匹配B使能触发DMA
|
||||
boolean_t bAdtCntMatchATrigDmaEn; ///< 计数匹配A使能触发DMA
|
||||
boolean_t bAdtSpecilMatchBTrigEn; ///< 专用比较基准值匹配B使能触发ADC
|
||||
boolean_t bAdtSpecilMatchATrigEn; ///< 专用比较基准值匹配A使能触发ADC
|
||||
boolean_t bAdtUnderFlowTrigEn; ///< 下溢匹配使能触发ADC
|
||||
boolean_t bAdtOverFlowTrigEn; ///< 上溢匹配使能触发ADC
|
||||
boolean_t bAdtCntMatchDTrigEn; ///< 计数匹配D使能触发ADC
|
||||
boolean_t bAdtCntMatchCTrigEn; ///< 计数匹配C使能触发ADC
|
||||
boolean_t bAdtCntMatchBTrigEn; ///< 计数匹配B使能触发ADC
|
||||
boolean_t bAdtCntMatchATrigEn; ///< 计数匹配A使能触发ADC
|
||||
}stc_adt_irq_trig_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT Trig端口配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_port_trig_cfg
|
||||
{
|
||||
en_adt_ttrig_trigxs_t enTrigSrc; ///< 触发源选择
|
||||
boolean_t bFltEn; ///< 触发源捕获输入滤波使能
|
||||
en_adt_fconr_nofick_t enFltClk; ///< 滤波采样基准时钟
|
||||
}stc_adt_port_trig_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT Z相输入屏蔽功能配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_zmask_cfg
|
||||
{
|
||||
en_adt_gconr_zmsk_t enZMaskCycle; ///< Z相输入屏蔽计数周期选择
|
||||
boolean_t bFltPosCntMaksEn; ///< Z相输入时的屏蔽周期内,位置计数器的清零功能不屏蔽(FALSE)或屏蔽(TRUE)
|
||||
boolean_t bFltRevCntMaksEn; ///< Z相输入时的屏蔽周期内,公转计数器的计数功能不屏蔽(FALSE)或屏蔽(TRUE)
|
||||
}stc_adt_zmask_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT TIMxX端口配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_TIMxX_port_cfg
|
||||
{
|
||||
en_adt_pconr_capc_t enCap; ///< 端口功能模式
|
||||
boolean_t bOutEn; ///< 输出使能
|
||||
en_adt_pconr_perc_t enPerc; ///< 周期值匹配时端口状态
|
||||
en_adt_pconr_cmpc_t enCmpc; ///< 比较值匹配时端口状态
|
||||
en_adt_pconr_stastps_t enStaStp; ///< 计数开始停止端口状态选择
|
||||
en_adt_pconr_port_out_t enStaOut; ///< 计数开始端口输出状态
|
||||
en_adt_pconr_port_out_t enStpOut; ///< 计数停止端口输出状态
|
||||
en_adt_pconr_disval_t enDisVal; ///< 强制输出无效时输出状态控制
|
||||
en_adt_pconr_dissel_t enDisSel; ///< 强制输出无效条件选择
|
||||
boolean_t bFltEn; ///< 端口捕获输入滤波使能
|
||||
en_adt_fconr_nofick_t enFltClk; ///< 端口滤波采样基准时钟
|
||||
}stc_adt_CHxX_port_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT刹车端口配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_break_port_cfg
|
||||
{
|
||||
boolean_t bPortEn; ///< 端口使能
|
||||
en_adt_ptbrk_polarity_t enPol; ///< 极性选择
|
||||
}stc_adt_break_port_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT无效条件3配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_disable_3_cfg
|
||||
{
|
||||
stc_adt_break_port_cfg_t stcBrkPtCfg[16]; ///< 刹车端口配置
|
||||
boolean_t bFltEn; ///< 刹车端口滤波使能
|
||||
en_adt_fconr_nofick_t enFltClk; ///< 滤波采样基准时钟
|
||||
}stc_adt_disable_3_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT无效条件1配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_disable_1_cfg
|
||||
{
|
||||
boolean_t bTim6OutSH; ///< TIM6输出同高
|
||||
boolean_t bTim5OutSH; ///< TIM5输出同高
|
||||
boolean_t bTim4OutSH; ///< TIM4输出同高
|
||||
boolean_t bTim6OutSL; ///< TIM6输出同低
|
||||
boolean_t bTim5OutSL; ///< TIM5输出同低
|
||||
boolean_t bTim4OutSL; ///< TIM4输出同低
|
||||
}stc_adt_disable_1_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT PWM展频计数配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_pwm_dither_cfg
|
||||
{
|
||||
en_adt_pwm_dither_type_t enAdtPDType; ///< PWM展频计数选择
|
||||
boolean_t bTimxBPDEn; ///< PWM通道B展频使能
|
||||
boolean_t bTimxAPDEn; ///< PWM通道A展频使能
|
||||
}stc_adt_pwm_dither_cfg_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT基本计数配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_basecnt_cfg
|
||||
{
|
||||
en_adt_cnt_mode_t enCntMode; ///< 计数模式
|
||||
en_adt_cnt_dir_t enCntDir; ///< 计数方向
|
||||
en_adt_cnt_ckdiv_t enCntClkDiv; ///< 计数时钟选择
|
||||
}stc_adt_basecnt_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT计数状态
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_cntstate_cfg
|
||||
{
|
||||
uint16_t u16Counter; ///< 当前计数器的计数值
|
||||
boolean_t enCntDir; ///< 计数方向
|
||||
uint8_t u8ValidPeriod; ///< 有效周期计数
|
||||
boolean_t bCMSBDF; ///< 向下计数专用比较基准值匹配B标志
|
||||
boolean_t bCMSBUF; ///< 向上计数专用比较基准值匹配A标志
|
||||
boolean_t bCMSADF; ///< 向下计数专用比较基准值匹配B标志
|
||||
boolean_t bCMSAUF; ///< 向上计数专用比较基准值匹配A标志
|
||||
boolean_t bDTEF; ///< 死区时间错误标志
|
||||
boolean_t bUDFF; ///< 下溢匹配标志
|
||||
boolean_t bOVFF; ///< 上溢匹配标志
|
||||
boolean_t bCMDF; ///< 计数匹配D标志
|
||||
boolean_t bCMCF; ///< 计数匹配C标志
|
||||
boolean_t bCMBF; ///< 计数匹配B标志
|
||||
boolean_t bCMAF; ///< 计数匹配A标志
|
||||
}stc_adt_cntstate_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ADT有效计数周期
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_adt_validper_cfg
|
||||
{
|
||||
en_adt_vperr_pcnts_t enValidCnt; ///< 有效周期选择
|
||||
en_adt_vperr_pcnte_t enValidCdt; ///< 有效周期计数条件
|
||||
boolean_t bPeriodD; ///< 通用信号有效周期选择D
|
||||
boolean_t bPeriodC; ///< 通用信号有效周期选择C
|
||||
boolean_t bPeriodB; ///< 通用信号有效周期选择B
|
||||
boolean_t bPeriodA; ///< 通用信号有效周期选择A
|
||||
}stc_adt_validper_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//配置硬件递加事件
|
||||
en_result_t Adt_CfgHwCntUp(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_cnt_t enAdtHwCntUp);
|
||||
//清除硬件递加事件
|
||||
en_result_t Adt_ClearHwCntUp(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置硬件递减事件
|
||||
en_result_t Adt_CfgHwCntDwn(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_cnt_t enAdtHwCntDwn);
|
||||
//清除硬件递减事件
|
||||
en_result_t Adt_ClearHwCntDwn(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置硬件启动事件
|
||||
en_result_t Adt_CfgHwStart(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_trig_t enAdtHwStart);
|
||||
//清除硬件启动事件
|
||||
en_result_t Adt_ClearHwStart(M0P_ADTIM_TypeDef *ADTx);
|
||||
//使能硬件启动事件
|
||||
en_result_t Adt_EnableHwStart(M0P_ADTIM_TypeDef *ADTx);
|
||||
//禁止硬件启动事件
|
||||
en_result_t Adt_DisableHwStart(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置硬件停止事件
|
||||
en_result_t Adt_CfgHwStop(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_trig_t enAdtHwStop);
|
||||
//清除硬件停止事件
|
||||
en_result_t Adt_ClearHwStop(M0P_ADTIM_TypeDef *ADTx);
|
||||
//使能硬件停止事件
|
||||
en_result_t Adt_EnableHwStop(M0P_ADTIM_TypeDef *ADTx);
|
||||
//禁止硬件停止事件
|
||||
en_result_t Adt_DisableHwStop(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置硬件清零事件
|
||||
en_result_t Adt_CfgHwClear(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_trig_t enAdtHwClear);
|
||||
//清除硬件清零事件
|
||||
en_result_t Adt_ClearHwClear(M0P_ADTIM_TypeDef *ADTx);
|
||||
//使能硬件清零事件
|
||||
en_result_t Adt_EnableHwClear(M0P_ADTIM_TypeDef *ADTx);
|
||||
//禁止硬件清零事件
|
||||
en_result_t Adt_DisableHwClear(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置A通道硬件捕获事件
|
||||
en_result_t Adt_CfgHwCaptureA(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_trig_t enAdtHwCaptureA);
|
||||
//清除A通道硬件捕获事件
|
||||
en_result_t Adt_ClearHwCaptureA(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置B通道硬件捕获事件
|
||||
en_result_t Adt_CfgHwCaptureB(M0P_ADTIM_TypeDef *ADTx, en_adt_hw_trig_t enAdtHwCaptureB);
|
||||
//清除B通道硬件捕获事件
|
||||
en_result_t Adt_ClearHwCaptureB(M0P_ADTIM_TypeDef *ADTx);
|
||||
//软件同步启动
|
||||
en_result_t Adt_SwSyncStart(stc_adt_sw_sync_t* pstcAdtSwSyncStart);
|
||||
//软件同步停止
|
||||
en_result_t Adt_SwSyncStop(stc_adt_sw_sync_t* pstcAdtSwSyncStop);
|
||||
//软件同步清零
|
||||
en_result_t Adt_SwSyncClear(stc_adt_sw_sync_t* pstcAdtSwSyncClear);
|
||||
//获取软件同步状态
|
||||
en_result_t Adt_GetSwSyncState(stc_adt_sw_sync_t* pstcAdtSwSyncState);
|
||||
//AOS触发配置
|
||||
en_result_t Adt_AosTrigCfg(stc_adt_aos_trig_cfg_t* pstcAdtAosTrigCfg);
|
||||
//中断触发配置
|
||||
en_result_t Adt_IrqTrigCfg(M0P_ADTIM_TypeDef *ADTx,
|
||||
stc_adt_irq_trig_cfg_t* pstcAdtIrqTrigCfg);
|
||||
//端口触发配置
|
||||
en_result_t Adt_PortTrigCfg(en_adt_trig_port_t enAdtTrigPort,
|
||||
stc_adt_port_trig_cfg_t* pstcAdtPortTrigCfg);
|
||||
//CHxX端口配置
|
||||
en_result_t Adt_CHxXPortCfg(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_CHxX_port_t enAdtCHxXPort,
|
||||
stc_adt_CHxX_port_cfg_t* pstcAdtCHxXCfg);
|
||||
//使能端口刹车
|
||||
en_result_t Adt_EnableBrakePort(uint8_t port, stc_adt_break_port_cfg_t* pstcAdtBrkPtCfg);
|
||||
//清除端口刹车
|
||||
void Adt_ClearBrakePort(void);
|
||||
//无效条件3配置(端口刹车)
|
||||
en_result_t Adt_Disable3Cfg(stc_adt_disable_3_cfg_t* pstcAdtDisable3);
|
||||
//软件刹车 Enable/Disable(仅适用于无效条件3使能的情况下)
|
||||
en_result_t Adt_SwBrake(boolean_t bSwBrk);
|
||||
//获取端口刹车标志
|
||||
boolean_t Adt_GetPortBrakeFlag(void);
|
||||
//清除端口刹车标志
|
||||
void Adt_ClearPortBrakeFlag(void);
|
||||
//无效条件1配置(同高同低刹车)
|
||||
en_result_t Adt_Disable1Cfg(stc_adt_disable_1_cfg_t* pstcAdtDisable1);
|
||||
//获取同高同低刹车标志
|
||||
boolean_t Adt_GetSameBrakeFlag(void);
|
||||
//清除同高同低刹车标志
|
||||
void Adt_ClearSameBrakeFlag(void);
|
||||
//PWM展频配置
|
||||
en_result_t Adt_PwmDitherCfg(M0P_ADTIM_TypeDef *ADTx, stc_adt_pwm_dither_cfg_t* pstcAdtPwmDitherCfg);
|
||||
//AdvTimer初始化
|
||||
en_result_t Adt_Init(M0P_ADTIM_TypeDef *ADTx, stc_adt_basecnt_cfg_t* pstcAdtBaseCntCfg);
|
||||
//AdvTimer去初始化
|
||||
en_result_t Adt_DeInit(M0P_ADTIM_TypeDef *ADTx);
|
||||
//AdvTimert启动
|
||||
en_result_t Adt_StartCount(M0P_ADTIM_TypeDef *ADTx);
|
||||
//AdvTimert停止
|
||||
en_result_t Adt_StopCount(M0P_ADTIM_TypeDef *ADTx);
|
||||
//设置计数值
|
||||
en_result_t Adt_SetCount(M0P_ADTIM_TypeDef *ADTx, uint16_t u16Value);
|
||||
//获取计数值
|
||||
uint16_t Adt_GetCount(M0P_ADTIM_TypeDef *ADTx);
|
||||
//清除计数值
|
||||
en_result_t Adt_ClearCount(M0P_ADTIM_TypeDef *ADTx);
|
||||
//获取有效周期计数值
|
||||
uint8_t Adt_GetVperNum(M0P_ADTIM_TypeDef *ADTx);
|
||||
//获取状态标志
|
||||
boolean_t Adt_GetState(M0P_ADTIM_TypeDef *ADTx, en_adt_state_type_t enstate);
|
||||
//配置计数周期
|
||||
en_result_t Adt_SetPeriod(M0P_ADTIM_TypeDef *ADTx, uint16_t u16Period);
|
||||
//配置计数周期缓冲
|
||||
en_result_t Adt_SetPeriodBuf(M0P_ADTIM_TypeDef *ADTx, uint16_t u16PeriodBuf);
|
||||
//清除计数周期缓冲
|
||||
en_result_t Adt_ClearPeriodBuf(M0P_ADTIM_TypeDef *ADTx);
|
||||
//配置有效计数周期
|
||||
en_result_t Adt_SetValidPeriod(M0P_ADTIM_TypeDef *ADTx,
|
||||
stc_adt_validper_cfg_t* pstcAdtValidPerCfg);
|
||||
//配置比较输出计数基准值
|
||||
en_result_t Adt_SetCompareValue(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_compare_t enAdtCompare,
|
||||
uint16_t u16Compare);
|
||||
//配置通用比较值/捕获值的缓存传送
|
||||
en_result_t Adt_EnableValueBuf(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_CHxX_port_t enAdtCHxXPort,
|
||||
boolean_t bCompareBufEn);
|
||||
//清除比较输出计数值/捕获值缓存
|
||||
en_result_t Adt_ClearValueBuf(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_CHxX_port_t enAdtCHxXPort);
|
||||
//获取捕获值
|
||||
en_result_t Adt_GetCaptureValue(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_CHxX_port_t enAdtCHxXPort,
|
||||
uint16_t* pu16Capture);
|
||||
//获取捕获缓存值
|
||||
en_result_t Adt_GetCaptureBuf(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_CHxX_port_t enAdtCHxXPort,
|
||||
uint16_t* pu16CaptureBuf);
|
||||
//设置死区时间上基准值
|
||||
en_result_t Adt_SetDTUA(M0P_ADTIM_TypeDef *ADTx,
|
||||
uint16_t u16Value);
|
||||
//设置死区时间下基准值
|
||||
en_result_t Adt_SetDTDA(M0P_ADTIM_TypeDef *ADTx,
|
||||
uint16_t u16Value);
|
||||
//配置死区时间功能
|
||||
en_result_t Adt_CfgDT(M0P_ADTIM_TypeDef *ADTx,
|
||||
boolean_t bDTEn,
|
||||
boolean_t bEqual);
|
||||
//配置中断
|
||||
en_result_t Adt_CfgIrq(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_irq_type_t enAdtIrq,
|
||||
boolean_t bEn);
|
||||
//获取中断标志
|
||||
boolean_t Adt_GetIrqFlag(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_irq_type_t enAdtIrq);
|
||||
//清除中断标志
|
||||
en_result_t Adt_ClearIrqFlag(M0P_ADTIM_TypeDef *ADTx,
|
||||
en_adt_irq_type_t enAdtIrq);
|
||||
//清除所有中断标志
|
||||
en_result_t Adt_ClearAllIrqFlag(M0P_ADTIM_TypeDef *ADTx);
|
||||
//Z相输入屏蔽设置
|
||||
en_result_t Adt_CfgZMask(M0P_ADTIM_TypeDef *ADTx,
|
||||
stc_adt_zmask_cfg_t* pstcAdtZMaskCfg);
|
||||
|
||||
//@} // ADT Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ADT_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
@@ -0,0 +1,132 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file aes.h
|
||||
**
|
||||
** AES 数据结构及API声明.
|
||||
**
|
||||
** - 2016-05-04 LuX V1.0.
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __AES_H__
|
||||
#define __AES_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup AESGroup AES
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief AES密钥长度类型定义
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_aes_key_type
|
||||
{
|
||||
AesKey128 = 0u, ///< 128 bits
|
||||
AesKey192 = 1u, ///< 192 bits
|
||||
AesKey256 = 2u, ///< 256 bits
|
||||
}en_aes_key_type_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief AES配置结构体
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t* pu32Cipher; ///< AES 密文指针
|
||||
uint32_t* pu32Plaintext; ///< AES 明文指针
|
||||
uint32_t* pu32Key; ///< AES 密钥指针
|
||||
en_aes_key_type_t enKeyLen; ///< AES 密钥长度类型
|
||||
|
||||
}stc_aes_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//AES 加密
|
||||
en_result_t AES_Encrypt(stc_aes_cfg_t* pstcAesCfg);
|
||||
//AES 解密
|
||||
en_result_t AES_Decrypt(stc_aes_cfg_t* pstcAesCfg);
|
||||
|
||||
|
||||
//@} // AES Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __AES_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file bgr.h
|
||||
**
|
||||
** BGR 数据结构及API声明.
|
||||
**
|
||||
** - 2018-04-21 LuX V1.0.
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CRC_H__
|
||||
#define __CRC_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup BGR
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///<内部温度传感器使能/关闭
|
||||
void Bgr_TempSensorEnable(void);
|
||||
void Bgr_TempSensorDisable(void);
|
||||
///<BGR使能/关闭
|
||||
void Bgr_BgrEnable(void);
|
||||
void Bgr_BgrDisable(void);
|
||||
|
||||
//@} // BGR Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __BGR_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
+771
@@ -0,0 +1,771 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file bt.h
|
||||
**
|
||||
** 基本定时器数据结构及API声明
|
||||
** @link BT Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-18 Husj First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __BT_H__
|
||||
#define __BT_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup BtGroup Base Timer (BT)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 定时器选择数据类型重定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_unit
|
||||
{
|
||||
TIM0 = 0u, ///< Timer 0
|
||||
TIM1 = 1u, ///< Timer 1
|
||||
TIM2 = 2u, ///< Timer 2
|
||||
}en_bt_unit_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 工作模式选择数据类型重定义 (MODE)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_work_mode
|
||||
{
|
||||
BtWorkMode0 = 0u, ///< 定时器模式
|
||||
BtWorkMode1 = 1u, ///< PWC模式
|
||||
BtWorkMode2 = 2u, ///< 锯齿波模式
|
||||
BtWorkMode3 = 3u, ///< 三角波模式
|
||||
}en_bt_work_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 极性控制数据类型重定义 (GATE_P)(模式0)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m0_gatep
|
||||
{
|
||||
BtGatePositive = 0u, ///< 高电平有效
|
||||
BtGateOpposite = 1u, ///< 低电平有效
|
||||
}en_bt_m0_gatep_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM 预除频选择 (PRS)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_cr_timclkdiv
|
||||
{
|
||||
BtPCLKDiv1 = 0u, ///< Div 1
|
||||
BtPCLKDiv2 = 1u, ///< Div 2
|
||||
BtPCLKDiv4 = 2u, ///< Div 4
|
||||
BtPCLKDiv8 = 3u, ///< Div 8
|
||||
BtPCLKDiv16 = 4u, ///< Div 16
|
||||
BtPCLKDiv32 = 5u, ///< Div 32
|
||||
BtPCLKDiv64 = 6u, ///< Div 64
|
||||
BtPCLKDiv256 = 7u, ///< Div 256
|
||||
}en_bt_cr_timclkdiv_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数/定时器功能选择数据类型重定义 (CT)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_cr_ct
|
||||
{
|
||||
BtTimer = 0u, ///< 定时器功能,计数时钟为内部PCLK
|
||||
BtCounter = 1u, ///< 计数器功能,计数时钟为外部ETR
|
||||
}en_bt_cr_ct_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 定时器工作模式数据类型重定义 (MD)(模式0)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m0cr_md
|
||||
{
|
||||
Bt32bitFreeMode = 0u, ///< 32位计数器/定时器
|
||||
Bt16bitArrMode = 1u, ///< 自动重载16位计数器/定时器
|
||||
}en_bt_m0cr_md_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BT0/BT1/BT2中断类型数据类型重定义(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_irq_type
|
||||
{
|
||||
BtUevIrq = 0u, ///< 溢出/事件更新中断
|
||||
BtCA0Irq = 2u, ///< 捕获/比较中断A(仅模式1/23存在)
|
||||
BtCB0Irq = 5u, ///< 捕获/比较中断B(仅模式23存在)
|
||||
BtCA0E = 8u, ///< CH0A捕获数据丢失标志(仅模式23存在),不是中断
|
||||
BtCB0E = 11u, ///< CH0B捕获数据丢失标志(仅模式23存在),不是中断
|
||||
BtBkIrq = 14u, ///< 刹车中断(仅模式23存在)
|
||||
BtTrigIrq = 15u, ///< 触发中断(仅模式23存在)
|
||||
}en_bt_irq_type_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 测量开始结束数据类型重定义 (Edg1stEdg2nd)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m1cr_Edge
|
||||
{
|
||||
BtPwcRiseToRise = 0u, ///< 上升沿到上升沿(周期)
|
||||
BtPwcFallToRise = 1u, ///< 下降沿到上升沿(低电平)
|
||||
BtPwcRiseToFall = 2u, ///< 上升沿到下降沿(高电平)
|
||||
BtPwcFallToFall = 3u, ///< 下降沿到下降沿(周期)
|
||||
}en_bt_m1cr_Edge_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC测量测试模式选择数据类型重定义 (Oneshot)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m1cr_oneshot
|
||||
{
|
||||
BtPwcCycleDetect = 0u, ///< PWC循环测量
|
||||
BtPwcOneShotDetect = 1u, ///< PWC单次测量
|
||||
}en_bt_m1cr_oneshot_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC IA0选择数据类型重定义 (IA0S)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m1_mscr_ia0s
|
||||
{
|
||||
BtIA0Input = 0u, ///< IAO输入
|
||||
BtXORInput = 1u, ///< IA0 ETR GATE XOR(TIM0/1/2)/IA0 IA1 IA2 XOR(TIM3)
|
||||
}en_bt_m1_mscr_ia0s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC IB0选择数据类型重定义 (IA0S)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m1_mscr_ib0s
|
||||
{
|
||||
BtIB0Input = 0u, ///< IBO输入
|
||||
BtTsInput = 1u, ///< 内部触发TS选择信号
|
||||
}en_bt_m1_mscr_ib0s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 输出极性、输入相位 数据类型重定义 (CCPA0/CCPB0/ETP/BKP)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_port_polarity
|
||||
{
|
||||
BtPortPositive = 0u, ///< 正常输入输出
|
||||
BtPortOpposite = 1u, ///< 反向输入输出
|
||||
}en_bt_port_polarity_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 滤波选择数据类型重定义 (FLTET/FLTA0/FLAB0)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_flt
|
||||
{
|
||||
BtFltNone = 0u, ///< 无滤波
|
||||
BtFltPCLKCnt3 = 4u, ///< PCLK 3个连续有效
|
||||
BtFltPCLKDiv4Cnt3 = 5u, ///< PCLK/4 3个连续有效
|
||||
BtFltPCLKDiv16Cnt3 = 6u, ///< PCLK/16 3个连续有效
|
||||
BtFltPCLKDiv64Cnt3 = 7u, ///< PCLK/64 3个连续有效
|
||||
}en_bt_flt_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 通道比较控制 数据类型重定义 (OCMA/OCMB)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_fltr_ocm
|
||||
{
|
||||
BtForceLow = 0u, ///< 强制为0
|
||||
BtForceHigh = 1u, ///< 强制为1
|
||||
BtCMPForceLow = 2u, ///< 比较匹配时强制为0
|
||||
BtCMPForceHigh = 3u, ///< 比较匹配时强制为1
|
||||
BtCMPInverse = 4u, ///< 比较匹配时翻转电平
|
||||
BtCMPOnePrdHigh = 5u, ///< 比较匹配时输出一个计数周期的高电平
|
||||
BtPWMMode1 = 6u, ///< 通道控制为PWM mode 1
|
||||
BtPWMMode2 = 7u, ///< 通道控制为PWM mode 2
|
||||
}en_bt_m23_fltr_ocm_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式TS数据类型重定义 (TS)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_mscr_ts
|
||||
{
|
||||
BtTs0ETR = 0u, ///< ETR外部输入滤波后的相位选择信号
|
||||
BtTs1TIM0TRGO = 1u, ///< Timer0的TRGO输出信号
|
||||
BtTs2TIM1TRGO = 2u, ///< Timer1的TRGO输出信号
|
||||
BtTs3TIM2TRGO = 3u, ///< Timer2的TRGO输出信号
|
||||
BtTs4TIM3TRGO = 4u, ///< Timer3的TRGO输出信号
|
||||
//BtTs5IA0ED = 5u, ///< 无效
|
||||
BtTs6IAFP = 6u, ///< CH0A 外部输输入滤波后的相位选择信号
|
||||
BtTs7IBFP = 7u, ///< CH0B 外部输输入滤波后的相位选择信
|
||||
}en_bt_mscr_ts_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWM输出模式选择数据类型重定义 (COMP)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23cr_comp
|
||||
{
|
||||
BtIndependentPWM = 0u, ///< 独立PWM输出
|
||||
BtComplementaryPWM = 1u, ///< 互补PWM输出
|
||||
}en_bt_m23cr_comp_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数方向选择数据类型重定义 (DIR)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23cr_dir
|
||||
{
|
||||
BtCntUp = 0u, ///< 向上计数
|
||||
BtCntDown = 1u, ///< 向下计数
|
||||
}en_bt_m23cr_dir_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数方向选择数据类型重定义 (PWM2S)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23cr_pwm2s
|
||||
{
|
||||
BtDoublePointCmp = 0u, ///< 双点比较使能,使用CCRA,CCRB比较控制OCREFA输出
|
||||
BtSinglePointCmp = 1u, ///< 单点比较使能,使用CCRA比较控制OCREFA输出
|
||||
}en_bt_m23cr_pwm2s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief GATE在PWM互补模式下捕获或比较功能 选择数据类型重定义 (CSG)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23cr_csg
|
||||
{
|
||||
BtPWMCompGateCmpOut = 0u, ///< 在PWM互补模式下,Gate作为比较输出
|
||||
BtPWMCompGateCapIn = 1u, ///< 在PWM互补模式下,Gate作为捕获输入
|
||||
}en_bt_m23cr_csg_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较捕获寄存器 数据类型重定义 (CCR0A,CCR0B)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_ccrx
|
||||
{
|
||||
BtCCR0A = 0u, ///< CCR0A比较捕获寄存器
|
||||
BtCCR0B = 1u, ///< CCR0B比较捕获寄存器
|
||||
}en_bt_m23_ccrx_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief OCREF清除源 选择数据类型重定义 (OCCS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23ce_occs
|
||||
{
|
||||
BtOC_Ref_Clr = 0u, ///< 来自VC的OC_Ref_Clr
|
||||
BtETRf = 1u, ///< 外部ETRf
|
||||
}en_bt_m23ce_occs_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较匹配中断模式 选择数据类型重定义 (CIS/CISB)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_cisa_cisb
|
||||
{
|
||||
BtCmpIntNone = 0u, ///< 无比较匹配中断
|
||||
BtCmpIntRise = 1u, ///< 比较匹配上升沿中断
|
||||
BtCmpIntFall = 2u, ///< 比较匹配下降沿中断
|
||||
BtCmpIntRiseFall = 3u, ///< 比较匹配上升沿下降沿中断
|
||||
}en_bt_m23_cisa_cisb_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BT端口控制 - 刹车时CHx输出状态控制(BKSA/BKSB)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_bt_m23_crch0_bks
|
||||
{
|
||||
BtCHxBksHiZ = 0u, ///< 刹车使能时,CHx端口输出高阻态
|
||||
BtCHxBksNorm = 1u, ///< 刹车使能时,CHx端口正常输出
|
||||
BtCHxBksLow = 2u, ///< 刹车使能时,CHx端口输出低电平
|
||||
BtCHxBksHigh = 3u, ///< 刹车使能时,CHx端口输出高电平
|
||||
}en_bt_m23_crch0_bks_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BT端口控制 - CHx上升沿下降沿捕获(CRx/CFx)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_bt_m23_crch0_cfx_crx
|
||||
{
|
||||
BtCHxCapNone = 0u, ///< CHx通道捕获禁止
|
||||
BtCHxCapRise = 1u, ///< CHx通道上升沿捕获使能
|
||||
BtCHxCapFall = 2u, ///< CHx通道下降沿捕获使能
|
||||
BtCHxCapFallRise = 3u, ///< CHx通道上升沿下降沿捕获都使能
|
||||
}en_bt_m23_crch0_cfx_crx_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BT端口控制 - CHx比较捕获模式(CSA/CSB)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_bt_m23_crch0_csa_csb
|
||||
{
|
||||
BtCHxCmpMode = 0u, ///< CHx通道设置为比较模式
|
||||
BtCHxCapMode = 1u, ///< CHx通道设置为捕获模式
|
||||
}en_bt_m23_crch0_csa_csb_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较模式下 DMA比较触发选择 数据类型重定义 (CCDS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_mscr_ccds
|
||||
{
|
||||
BtCmpTrigDMA = 0u, ///< 比较匹配触发DMA
|
||||
BtUEVTrigDMA = 1u, ///< 事件更新代替比较匹配触发DMA
|
||||
}en_bt_m23_mscr_ccds_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式选择 数据类型重定义 (MSM)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_mscr_msm
|
||||
{
|
||||
BtSlaveMode = 0u, ///< 从模式
|
||||
BtMasterMode = 1u, ///< 主模式
|
||||
}en_bt_m23_mscr_msm_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发主模式输出源 数据类型重定义 (MMS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_mscr_mms
|
||||
{
|
||||
BtMasterUG = 0u, ///< UG(软件更新)源
|
||||
BtMasterCTEN = 1u, ///< CTEN源
|
||||
BtMasterUEV = 2u, ///< UEV更新源
|
||||
BtMasterCMPSO = 3u, ///< 比较匹配选择输出源
|
||||
BtMasterOCA0Ref = 4u, ///< OCA0_Ref源
|
||||
BtMasterOCB0Ref = 5u, ///< OCB0_Ref源
|
||||
//BtMasterOCB0Ref = 6u,
|
||||
//BtMasterOCB0Ref = 7u,
|
||||
}en_bt_m23_mscr_mms_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发从模式选择 数据类型重定义 (SMS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_m23_mscr_sms
|
||||
{
|
||||
BtSlaveIClk = 0u, ///< 使用内部时钟
|
||||
BtSlaveResetTIM = 1u, ///< 复位功能
|
||||
BtSlaveTrigMode = 2u, ///< 触发模式
|
||||
BtSlaveEClk = 3u, ///< 外部时钟模式
|
||||
BtSlaveCodeCnt1 = 4u, ///< 正交编码计数模式1
|
||||
BtSlaveCodeCnt2 = 5u, ///< 正交编码计数模式2
|
||||
BtSlaveCodeCnt3 = 6u, ///< 正交编码计数模式3
|
||||
BtSlaveGateCtrl = 7u, ///< 门控功能
|
||||
}en_bt_m23_mscr_sms_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 定时器运行控制数据类型重定义 (CTEN)
|
||||
*****************************************************************************/
|
||||
typedef enum en_bt_start
|
||||
{
|
||||
BtCTENDisable = 0u, ///< 停止
|
||||
BtCTENEnable = 1u, ///< 运行
|
||||
}en_bt_start_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BaseTimer mode0 配置结构体定义(模式0)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_mode0_cfg
|
||||
{
|
||||
en_bt_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_bt_m0_gatep_t enGateP; ///< 门控极性控制
|
||||
boolean_t bEnGate; ///< 门控使能
|
||||
en_bt_cr_timclkdiv_t enPRS; ///< 预除频配置
|
||||
boolean_t bEnTog; ///< 翻转输出使能
|
||||
en_bt_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_bt_m0cr_md_t enCntMode; ///< 计数模式配置
|
||||
|
||||
func_ptr_t pfnTim0Cb; ///< Timer0中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim1Cb; ///< Timer1中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim2Cb; ///< Timer2中断服务回调函数[void function(void)]
|
||||
}stc_bt_mode0_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BaseTimer mode1 配置结构体定义(模式1)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_mode1_cfg
|
||||
{
|
||||
en_bt_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_bt_cr_timclkdiv_t enPRS; ///< 预除频配置
|
||||
en_bt_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_bt_m1cr_oneshot_t enOneShot; ///< 单次测量/循环测量选择
|
||||
|
||||
|
||||
func_ptr_t pfnTim0Cb; ///< Timer0中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim1Cb; ///< Timer1中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim2Cb; ///< Timer2中断服务回调函数[void function(void)]
|
||||
}stc_bt_mode1_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC输入配置结构体定义(模式1)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_pwc_input_cfg
|
||||
{
|
||||
en_bt_mscr_ts_t enTsSel; ///< 触发输入源选择
|
||||
en_bt_m1_mscr_ia0s_t enIA0Sel; ///< CHA0输入选择
|
||||
en_bt_m1_mscr_ib0s_t enIB0Sel; ///< CHB0输入选择
|
||||
en_bt_port_polarity_t enETRPhase; ///< ETR相位选择
|
||||
en_bt_flt_t enFltETR; ///< ETR滤波设置
|
||||
en_bt_flt_t enFltIA0; ///< CHA0滤波设置
|
||||
en_bt_flt_t enFltIB0; ///< CHB0滤波设置
|
||||
}stc_bt_pwc_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief BaseTimer mode23 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_mode23_cfg
|
||||
{
|
||||
en_bt_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_bt_m23cr_dir_t enCntDir; ///< 计数方向
|
||||
en_bt_cr_timclkdiv_t enPRS; ///< 时钟预除频配置
|
||||
en_bt_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_bt_m23cr_comp_t enPWMTypeSel; ///< PWM模式选择(独立/互补)
|
||||
en_bt_m23cr_pwm2s_t enPWM2sSel; ///< OCREFA双点比较功能选择
|
||||
boolean_t bOneShot; ///< 单次触发模式使能/禁止
|
||||
boolean_t bURSSel; ///< 更新源选择
|
||||
|
||||
func_ptr_t pfnTim0Cb; ///< Timer0中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim1Cb; ///< Timer1中断服务回调函数[void function(void)]
|
||||
func_ptr_t pfnTim2Cb; ///< Timer2中断服务回调函数[void function(void)]
|
||||
}stc_bt_mode23_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief GATE在PWM互补模式下捕获或比较功能 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_gate_cfg
|
||||
{
|
||||
en_bt_m23cr_csg_t enGateFuncSel; ///< Gate比较、捕获功能选择
|
||||
boolean_t bGateRiseCap; ///< GATE作为捕获功能时,上沿捕获有效控制
|
||||
boolean_t bGateFallCap; ///< GATE作为捕获功能时,下沿捕获有效控制
|
||||
}stc_bt_m23_gate_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief CHA/CHB通道比较控制 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_compare_cfg
|
||||
{
|
||||
en_bt_m23_crch0_csa_csb_t enCh0ACmpCap; ///< CH0A比较/捕获功能选择
|
||||
en_bt_m23_fltr_ocm_t enCH0ACmpCtrl; ///< CH0A通道比较控制
|
||||
en_bt_port_polarity_t enCH0APolarity; ///< CH0A输出极性控制
|
||||
boolean_t bCh0ACmpBufEn; ///< 比较A缓存功能 使能/禁止
|
||||
en_bt_m23_cisa_cisb_t enCh0ACmpIntSel; ///< CHA比较匹配中断选择
|
||||
|
||||
en_bt_m23_crch0_csa_csb_t enCh0BCmpCap; ///< CH0B比较/捕获功能选择
|
||||
en_bt_m23_fltr_ocm_t enCH0BCmpCtrl; ///< CH0B通道比较控制
|
||||
en_bt_port_polarity_t enCH0BPolarity; ///< CH0B输出极性控制
|
||||
boolean_t bCH0BCmpBufEn; ///< 比较B缓存功能 使能/禁止
|
||||
en_bt_m23_cisa_cisb_t enCH0BCmpIntSel; ///< CHB0比较匹配中断选择
|
||||
}stc_bt_m23_compare_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief CHA/CHB通道捕获控制 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_input_cfg
|
||||
{
|
||||
en_bt_m23_crch0_csa_csb_t enCh0ACmpCap; ///< CH0A比较/捕获功能选择
|
||||
en_bt_m23_crch0_cfx_crx_t enCH0ACapSel; ///< CH0A捕获边沿选择
|
||||
en_bt_flt_t enCH0AInFlt; ///< CH0A通道捕获滤波控制
|
||||
en_bt_port_polarity_t enCH0APolarity; ///< CH0A输入相位
|
||||
|
||||
en_bt_m23_crch0_csa_csb_t enCh0BCmpCap; ///< CH0B比较/捕获功能选择
|
||||
en_bt_m23_crch0_cfx_crx_t enCH0BCapSel; ///< HC0B捕获边沿选择
|
||||
en_bt_flt_t enCH0BInFlt; ///< CH0B通道捕获滤波控制
|
||||
en_bt_port_polarity_t enCH0BPolarity; ///< CH0B输入相位
|
||||
|
||||
}stc_bt_m23_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ETR输入相位滤波配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_etr_input_cfg
|
||||
{
|
||||
en_bt_port_polarity_t enETRPolarity; ///< ETR输入极性设置
|
||||
en_bt_flt_t enETRFlt; ///< ETR滤波设置
|
||||
}stc_bt_m23_etr_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 刹车BK输入相位滤波配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_bk_input_cfg
|
||||
{
|
||||
boolean_t bEnBrake; ///< 刹车使能
|
||||
boolean_t bEnVCBrake; ///< 使能VC0刹车
|
||||
boolean_t bEnSafetyBk; ///< 使能safety刹车
|
||||
boolean_t bEnBKSync; ///< TIM0/TIM1/TIM2刹车同步使能
|
||||
en_bt_m23_crch0_bks_t enBkCH0AStat; ///< 刹车时CHA端口状态设置
|
||||
en_bt_m23_crch0_bks_t enBkCH0BStat; ///< 刹车时CHB端口状态设置
|
||||
en_bt_port_polarity_t enBrakePolarity; ///< 刹车BK输入极性设置
|
||||
en_bt_flt_t enBrakeFlt; ///< 刹车BK滤波设置
|
||||
}stc_bt_m23_bk_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 死区功能配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_dt_cfg
|
||||
{
|
||||
boolean_t bEnDeadTime; ///< 刹车时CHA端口状态设置
|
||||
uint8_t u8DeadTimeValue; ///< 刹车时CHA端口状态设置
|
||||
}stc_bt_m23_dt_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发ADC配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_adc_trig_cfg
|
||||
{
|
||||
boolean_t bEnTrigADC; ///< 触发ADC全局控制
|
||||
boolean_t bEnUevTrigADC; ///< 事件更新触发ADC
|
||||
boolean_t bEnCH0ACmpTrigADC; ///< CH0A比较匹配触发ADC
|
||||
boolean_t bEnCH0BCmpTrigADC; ///< CH0B比较匹配触发ADC
|
||||
}stc_bt_m23_adc_trig_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DMA触发 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_trig_dma_cfg
|
||||
{
|
||||
boolean_t bUevTrigDMA; ///< 更新 触发DMA使能
|
||||
boolean_t bTITrigDMA; ///< Trig 触发DMA功能
|
||||
boolean_t bCmpATrigDMA; ///< A捕获比较触发DMA使能
|
||||
boolean_t bCmpBTrigDMA; ///< B捕获比较触发DMA使能
|
||||
en_bt_m23_mscr_ccds_t enCmpUevTrigDMA; ///< 比较模式下DMA比较触发选择
|
||||
}stc_bt_m23_trig_dma_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_master_slave_cfg
|
||||
{
|
||||
en_bt_m23_mscr_msm_t enMasterSlaveSel; ///< 主从模式选择
|
||||
en_bt_m23_mscr_mms_t enMasterSrc; ///< 主模式触发源选择
|
||||
en_bt_m23_mscr_sms_t enSlaveModeSel; ///< 从模式选择
|
||||
en_bt_mscr_ts_t enTsSel; ///< 触发输入源选择
|
||||
}stc_bt_m23_master_slave_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief OCREF清除功能 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_bt_m23_OCREF_Clr_cfg
|
||||
{
|
||||
en_bt_m23ce_occs_t enOCRefClrSrcSel; ///< OCREF清除源选择
|
||||
boolean_t bVCClrEn; ///< 是否使能来自VC的OCREF_Clr
|
||||
}stc_bt_m23_OCREF_Clr_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
//中断相关函数
|
||||
|
||||
//中断标志获取
|
||||
boolean_t Bt_GetIntFlag(en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
//中断标志清除
|
||||
en_result_t Bt_ClearIntFlag(en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
//所有中断标志清除
|
||||
en_result_t Bt_ClearAllIntFlag(en_bt_unit_t enUnit);
|
||||
//模式0中断使能
|
||||
en_result_t Bt_Mode0_EnableIrq(en_bt_unit_t enUnit);
|
||||
//模式1中断使能
|
||||
en_result_t Bt_Mode1_EnableIrq (en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
//模式2中断使能
|
||||
en_result_t Bt_Mode23_EnableIrq (en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
//模式0中断禁止
|
||||
en_result_t Bt_Mode0_DisableIrq(en_bt_unit_t enUnit);
|
||||
//模式1中断禁止
|
||||
en_result_t Bt_Mode1_DisableIrq (en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
//模式2中断禁止
|
||||
en_result_t Bt_Mode23_DisableIrq (en_bt_unit_t enUnit, en_bt_irq_type_t enBtIrq);
|
||||
|
||||
|
||||
//模式0初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Bt_Mode0_Init(en_bt_unit_t enUnit, stc_bt_mode0_cfg_t* pstcCfg);
|
||||
//timer 启动/停止
|
||||
en_result_t Bt_M0_Run(en_bt_unit_t enUnit);
|
||||
en_result_t Bt_M0_Stop(en_bt_unit_t enUnit);
|
||||
//重载值设置
|
||||
en_result_t Bt_M0_ARRSet(en_bt_unit_t enUnit, uint16_t u16Data);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Bt_M0_Cnt16Set(en_bt_unit_t enUnit, uint16_t u16Data);
|
||||
uint16_t Bt_M0_Cnt16Get(en_bt_unit_t enUnit);
|
||||
//32位计数值设置/获取
|
||||
en_result_t Bt_M0_Cnt32Set(en_bt_unit_t enUnit, uint32_t u32Data);
|
||||
uint32_t Bt_M0_Cnt32Get(en_bt_unit_t enUnit);
|
||||
//翻转输出使能/禁止(低电平)设定
|
||||
en_result_t Bt_M0_EnTOG_Output(en_bt_unit_t enUnit, boolean_t bEnTOG);
|
||||
//端口输出使能/禁止设定
|
||||
en_result_t Bt_M0_Enable_Output(en_bt_unit_t enUnit, boolean_t bEnOutput);
|
||||
|
||||
|
||||
//模式1初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Bt_Mode1_Init(en_bt_unit_t enUnit, stc_bt_mode1_cfg_t* pstcCfg);
|
||||
//PWC 输入配置
|
||||
en_result_t Bt_M1_Input_Cfg(en_bt_unit_t enUnit, stc_bt_pwc_input_cfg_t* pstcCfg);
|
||||
//PWC测量边沿起始结束选择
|
||||
en_result_t Bt_M1_PWC_Edge_Sel(en_bt_unit_t enUnit,en_bt_m1cr_Edge_t enEdgeSel);
|
||||
//timer 启动/停止
|
||||
en_result_t Bt_M1_Run(en_bt_unit_t enUnit);
|
||||
en_result_t Bt_M1_Stop(en_bt_unit_t enUnit);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Bt_M1_Cnt16Set(en_bt_unit_t enUnit, uint16_t u16Data);
|
||||
uint16_t Bt_M1_Cnt16Get(en_bt_unit_t enUnit);
|
||||
//脉冲宽度测量结果数值获取
|
||||
uint16_t Bt_M1_PWC_CapValueGet(en_bt_unit_t enUnit);
|
||||
|
||||
|
||||
//模式23初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Bt_Mode23_Init(en_bt_unit_t enUnit, stc_bt_mode23_cfg_t* pstcCfg);
|
||||
//timer 启动/停止
|
||||
en_result_t Bt_M23_Run(en_bt_unit_t enUnit);
|
||||
en_result_t Bt_M23_Stop(en_bt_unit_t enUnit);
|
||||
//PWM输出使能
|
||||
en_result_t Bt_M23_EnPWM_Output(en_bt_unit_t enUnit, boolean_t bEnOutput, boolean_t bEnAutoOutput);
|
||||
//重载值设置
|
||||
en_result_t Bt_M23_ARRSet(en_bt_unit_t enUnit, uint16_t u16Data, boolean_t bArrBufEn);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Bt_M23_Cnt16Set(en_bt_unit_t enUnit, uint16_t u16Data);
|
||||
uint16_t Bt_M23_Cnt16Get(en_bt_unit_t enUnit);
|
||||
//比较捕获寄存器CCR0A/CCR0B设置/读取
|
||||
en_result_t Bt_M23_CCR_Set(en_bt_unit_t enUnit, en_bt_m23_ccrx_t enCCRSel, uint16_t u16Data);
|
||||
uint16_t Bt_M23_CCR_Get(en_bt_unit_t enUnit, en_bt_m23_ccrx_t enCCRSel);
|
||||
//PWM互补输出模式下,GATE功能选择
|
||||
en_result_t Bt_M23_GateFuncSel(en_bt_unit_t enUnit,stc_bt_m23_gate_cfg_t* pstcCfg);
|
||||
//主从模式配置
|
||||
en_result_t Bt_M23_MasterSlave_Set(en_bt_unit_t enUnit, stc_bt_m23_master_slave_cfg_t* pstcCfg);
|
||||
//CH0A/CH0B比较通道控制
|
||||
en_result_t Bt_M23_PortOutput_Cfg(en_bt_unit_t enUnit, stc_bt_m23_compare_cfg_t* pstcCfg);
|
||||
//CH0A/CH0B输入控制
|
||||
en_result_t Bt_M23_PortInput_Cfg(en_bt_unit_t enUnit, stc_bt_m23_input_cfg_t* pstcCfg);
|
||||
//ERT输入控制
|
||||
en_result_t Bt_M23_ETRInput_Cfg(en_bt_unit_t enUnit, stc_bt_m23_etr_input_cfg_t* pstcCfg);
|
||||
//刹车BK输入控制
|
||||
en_result_t Bt_M23_BrakeInput_Cfg(en_bt_unit_t enUnit, stc_bt_m23_bk_input_cfg_t* pstcCfg);
|
||||
//触发ADC控制
|
||||
en_result_t Bt_M23_TrigADC_Cfg(en_bt_unit_t enUnit, stc_bt_m23_adc_trig_cfg_t* pstcCfg);
|
||||
//死区功能
|
||||
en_result_t Bt_M23_DT_Cfg(en_bt_unit_t enUnit, stc_bt_m23_dt_cfg_t* pstcCfg);
|
||||
//重复周期设置
|
||||
en_result_t Bt_M23_SetValidPeriod(en_bt_unit_t enUnit, uint8_t u8ValidPeriod);
|
||||
//OCREF清除功能
|
||||
en_result_t Bt_M23_OCRefClr(en_bt_unit_t enUnit, stc_bt_m23_OCREF_Clr_cfg_t* pstcCfg);
|
||||
//使能DMA传输
|
||||
en_result_t Bt_M23_EnDMA(en_bt_unit_t enUnit, stc_bt_m23_trig_dma_cfg_t* pstcCfg);
|
||||
//捕获比较A软件触发
|
||||
en_result_t Bt_M23_EnSwTrigCapCmpA(en_bt_unit_t enUnit);
|
||||
//捕获比较B软件触发
|
||||
en_result_t Bt_M23_EnSwTrigCapCmpB(en_bt_unit_t enUnit);
|
||||
//软件更新使能
|
||||
en_result_t Bt_M23_EnSwUev(en_bt_unit_t enUnit);
|
||||
//软件触发使能
|
||||
en_result_t Bt_M23_EnSwTrig(en_bt_unit_t enUnit);
|
||||
//软件刹车使能
|
||||
en_result_t Bt_M23_EnSwBk(en_bt_unit_t enUnit);
|
||||
|
||||
|
||||
//@} // BtGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __BT_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file crc.h
|
||||
**
|
||||
** CRC 数据结构及API声明.
|
||||
**
|
||||
** - 2016-05-04 LuX V1.0.
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __CRC_H__
|
||||
#define __CRC_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "sysctrl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup CrcGroup Cyclic Redundancy Check (CRC)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//CRC16 编码值获取
|
||||
uint16_t CRC16_Get8(uint8_t* pu8Data, uint32_t u32Len);
|
||||
uint16_t CRC16_Get16(uint16_t* pu16Data, uint32_t u32Len);
|
||||
uint16_t CRC16_Get32(uint32_t* pu32Data, uint32_t u32Len);
|
||||
//CRC16 校验
|
||||
en_result_t CRC16_Check8(uint8_t* pu8Data, uint32_t u32Len, uint16_t u16CRC);
|
||||
en_result_t CRC16_Check16(uint16_t* pu16Data, uint32_t u32Len, uint16_t u16CRC);
|
||||
en_result_t CRC16_Check32(uint32_t* pu32Data, uint32_t u32Len, uint16_t u16CRC);
|
||||
|
||||
|
||||
//CRC32 编码值获取
|
||||
uint32_t CRC32_Get8(uint8_t* pu8Data, uint32_t u32Len);
|
||||
uint32_t CRC32_Get16(uint16_t* pu16Data, uint32_t u32Len);
|
||||
uint32_t CRC32_Get32(uint32_t* pu32Data, uint32_t u32Len);
|
||||
//CRC32 校验
|
||||
en_result_t CRC32_Check8(uint8_t* pu8Data, uint32_t u32Len, uint32_t u32CRC);
|
||||
en_result_t CRC32_Check16(uint16_t* pu16Data, uint32_t u32Len, uint32_t u32CRC);
|
||||
en_result_t CRC32_Check32(uint32_t* pu32Data, uint32_t u32Len, uint32_t u32CRC);
|
||||
//@} // CRC Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CRC_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
@@ -0,0 +1,234 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file dac.h
|
||||
**
|
||||
** Header file for dac Converter functions
|
||||
** @link DAC Group Some description @endlink
|
||||
**
|
||||
** - 2019-04-10 First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
#ifndef __DAC_H__
|
||||
#define __DAC_H__
|
||||
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 使能或者禁止指令
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacDisable = 0u, //禁止
|
||||
DacEnable = 1u //使能
|
||||
}en_en_state_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 使能或者禁止DAC0通道输出缓冲器 DAC_CR0:BOFF0
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacBoffDisable = 1u,
|
||||
DacBoffEnable = 0u
|
||||
}en_dac_boff_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 使能或者禁止DAC0通道触发使能 DAC_CR0: TEN0
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacTenDisable = 0u,
|
||||
DacTenEnable = 1u
|
||||
}en_dac_ten_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DAC0通道触发选择 DAC_CR0: TSEL0
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacTim0Tradc = 0u, //TIM0_TRADC触发
|
||||
DacTim1Tradc = 1u, //TIM1_TRADC触发
|
||||
DacTim2Tradc = 2u, //TIM2_TRADC触发
|
||||
DacTim3Tradc = 3u, //TIM3_TRADC触发
|
||||
DacTim4Tradc = 4u, //TIM4_TRADC触发
|
||||
DacTim5Tradc = 5u, //TIM5_TRADC触发
|
||||
DacSwTriger = 6u, //软件触发
|
||||
DacExPortTriger = 7u //外部端口触发
|
||||
}en_dac_tsel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DAC0通道噪声/三角波生产使能或禁止 DAC_CR0: WAVE0
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacWaveDisable = 0u, //禁止生产波
|
||||
DacNoiseEnable = 1u, //使能生成噪声波
|
||||
DacTrWaveEnable = 2u //使能生产三角波
|
||||
}en_dac_wave_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DACx通道掩码/振幅选择器 DAC_CR0: MAMP0 & MAMP1
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacMemp01 = 0u,
|
||||
DacMenp03 = 1u,
|
||||
DacMenp07 = 2u,
|
||||
DacMenp15 = 3u,
|
||||
DacMenp31 = 4u,
|
||||
DacMenp63 = 5u,
|
||||
DacMenp127 = 6u,
|
||||
DacMenp255 = 7u,
|
||||
DacMenp511 = 8u,
|
||||
DacMenp1023 = 9u,
|
||||
DacMenp2047 = 10u,
|
||||
DacMenp4095 = 11u
|
||||
}en_dac_mamp_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DACx通道DMA使能或禁止 DAC_CR0: DMAEN0 & DMAEN1
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DACx通道DMA下溢中断使能或禁止 DAC_CR0: DMAUDRIE0 & DMAUDRIE1
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DACx参考电压选择 DAC_CR0: SREF0 & SREF1
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacVoltage1V5 = 0u, //内部1.5V
|
||||
DacVoltage2V5 = 1u, //内部2.5V
|
||||
DacVoltageExRef = 2u, //外部参考电压ExRef(PB01)
|
||||
DacVoltageAvcc = 3u //AVCC电压
|
||||
}en_dac_sref_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DACx触发选择寄存器DAC_ETRS DAC_ETRS
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacPortTrigPA9 = 0u, //触发端口为PA9
|
||||
DacPortTrigPB9 = 1u, //触发端口为PB9
|
||||
DacPortTrigPC9 = 2u, //触发端口为PC9
|
||||
DacPortTrigPD9 = 3u, //触发端口为PD9
|
||||
DacPortTrigPE9 = 4u, //触发端口为PE9
|
||||
DacPortTrigPF9 = 5u //触发端口为PF9
|
||||
}en_port_trig_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 对齐方式
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacRightAlign = 0u, //右对齐
|
||||
DacLeftAlign = 1u //左对齐
|
||||
}en_align_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 数据位数
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
DacBit8 = 0u, //8位
|
||||
DacBit12 = 1u //12位
|
||||
}en_bitno_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 初始化配置结构体
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_dac_boff_t boff_t;
|
||||
en_dac_ten_t ten_t;
|
||||
en_dac_tsel_t tsel_t;
|
||||
en_dac_wave_t wave_t;
|
||||
en_dac_mamp_t mamp_t;
|
||||
en_dac_sref_t sref_t;
|
||||
en_port_trig_t port_trig_t;
|
||||
en_align_t align;
|
||||
uint16_t dhr12;
|
||||
uint8_t dhr8;
|
||||
}stc_dac_cfg_t;
|
||||
|
||||
|
||||
|
||||
extern void Dac_DmaCmd(boolean_t NewState);
|
||||
extern void Dac_DmaITCfg(boolean_t NewState);
|
||||
extern boolean_t Dac_GetITStatus(void);
|
||||
extern void Dac_Cmd(boolean_t NewState);
|
||||
extern void Dac_SoftwareTriggerCmd(void);
|
||||
extern void Dac_Init(stc_dac_cfg_t* DAC_InitStruct);
|
||||
extern void Dac_SetChannelData(en_align_t DAC_Align, en_bitno_t DAC_Bit, uint16_t Data);
|
||||
extern uint16_t Dac_GetDataOutputValue(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif //__DAC_H__
|
||||
|
||||
/******************************************************************************/
|
||||
/* EOF (not truncated) */
|
||||
/******************************************************************************/
|
||||
@@ -0,0 +1,174 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file ddl.h
|
||||
**
|
||||
** DDL common define.
|
||||
** @link SampleGroup Some description @endlink
|
||||
**
|
||||
** - 2019-10-17 1.1 Lux
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __DDL_H__
|
||||
#define __DDL_H__
|
||||
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "base_types.h"
|
||||
#include "board_stkhc32l17x.h"
|
||||
#include "hc32l17x.h"
|
||||
#include "system_hc32l17x.h"
|
||||
#include "sysctrl.h"
|
||||
#include "interrupts_hc32l17x.h"
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/* Macro for initializing local structures to zero */
|
||||
/******************************************************************************/
|
||||
#define DDL_ZERO_STRUCT(x) ddl_memclr((uint8_t*)&(x), (uint32_t)(sizeof(x)))
|
||||
|
||||
#define DEC2BCD(x) ((((x)/10)<<4) + ((x)%10))
|
||||
#define BCD2DEC(x) ((((x)>>4)*10) + ((x)&0x0F))
|
||||
|
||||
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||||
|
||||
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||||
|
||||
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||||
|
||||
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||||
|
||||
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||||
|
||||
#define READ_REG(REG) ((REG))
|
||||
|
||||
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** Global Device Series List
|
||||
******************************************************************************/
|
||||
#define DDL_DEVICE_SERIES_HC32L17X (0u)
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** Global Device Package List
|
||||
******************************************************************************/
|
||||
// package definitions of HC device.
|
||||
#define DDL_DEVICE_PACKAGE_HC_C (0x00u)
|
||||
#define DDL_DEVICE_PACKAGE_HC_F (0x10u)
|
||||
#define DDL_DEVICE_PACKAGE_HC_J (0x20u)
|
||||
#define DDL_DEVICE_PACKAGE_HC_K (0x30u)
|
||||
|
||||
/******************************************************************************/
|
||||
/* User Device Setting Include file */
|
||||
/******************************************************************************/
|
||||
#include "ddl_device.h" // MUST be included here!
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global type definitions ('typedef') */
|
||||
/******************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Level
|
||||
**
|
||||
** Specifies levels.
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_level
|
||||
{
|
||||
DdlLow = 0u, ///< Low level '0'
|
||||
DdlHigh = 1u ///< High level '1'
|
||||
} en_level_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Generic Flag Code
|
||||
**
|
||||
** Specifies flags.
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_flag
|
||||
{
|
||||
DdlClr = 0u, ///< Flag clr '0'
|
||||
DdlSet = 1u ///< Flag set '1'
|
||||
} en_stat_flag_t, en_irq_flag_t;
|
||||
/******************************************************************************/
|
||||
/* Global variable declarations ('extern', definition in C source) */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global function prototypes ('extern', definition in C source) */
|
||||
/******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global function prototypes
|
||||
******************************************************************************/
|
||||
extern void ddl_memclr(void* pu8Address, uint32_t u32Count);
|
||||
uint32_t Log2(uint32_t u32Val);
|
||||
/**
|
||||
*******************************************************************************
|
||||
** This hook is part of wait loops.
|
||||
******************************************************************************/
|
||||
void delay1ms(uint32_t u32Cnt);
|
||||
void delay100us(uint32_t u32Cnt);
|
||||
void delay10us(uint32_t u32Cnt);
|
||||
void SetBit(uint32_t addr, uint32_t offset, boolean_t bFlag);
|
||||
void ClrBit(uint32_t addr, uint32_t offset);
|
||||
boolean_t GetBit(uint32_t addr, uint32_t offset);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DDL_H__ */
|
||||
|
||||
/******************************************************************************/
|
||||
/* EOF (not truncated) */
|
||||
/******************************************************************************/
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file debug.h
|
||||
**
|
||||
** Headerfile for DEBUG functions
|
||||
** @link Debug Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-15 Lux First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __DEBUG_H__
|
||||
#define __DEBUG_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup DebugGroup (DEBUG)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 调试模式下各模块工作状态类型定义
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_debug_module_active
|
||||
{
|
||||
DebugMskTim0 = 0x0001u, ///< TIM0
|
||||
DebugMskTim1 = 0x0002u, ///< TIM1
|
||||
DebugMskTim2 = 0x0004u, ///< TIM2
|
||||
DebugMskLpTim0 = 0x0008u, ///< LPTIM0
|
||||
DebugMskTim4 = 0x0010u, ///< TIM4
|
||||
DebugMskTim5 = 0x0020u, ///< TIM5
|
||||
DebugMskTim6 = 0x0040u, ///< TIM6
|
||||
DebugMskPca = 0x0080u, ///< PCA
|
||||
DebugMskWdt = 0x0100u, ///< WDT
|
||||
DebugMskRtc = 0x0200u, ///< RTC
|
||||
DebugMskTim3 = 0x0800u, ///< TIM3
|
||||
DebugMskLpTim1 = 0x1000u, ///< LPTIM1
|
||||
}en_debug_module_active_t;
|
||||
|
||||
/*******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///< 在SWD调试模式下,使能模块计数功能
|
||||
en_result_t Debug_ActiveEnable(en_debug_module_active_t enModule);
|
||||
///< 在SWD调试模式下,暂停模块计数功能
|
||||
en_result_t Debug_ActiveDisable(en_debug_module_active_t enModule);
|
||||
|
||||
//@} // Debug Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __DEBUG_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,356 @@
|
||||
/*****************************************************************************
|
||||
* Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file dma.h
|
||||
**
|
||||
** A detailed description is available at
|
||||
** @link DmacGroup Dmac description @endlink
|
||||
**
|
||||
** - 2018-03-09 1.0 Hongjh First version for Device Driver Library of Dmac.
|
||||
**
|
||||
******************************************************************************/
|
||||
#ifndef __DMAC_H__
|
||||
#define __DMAC_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \defgroup DmacGroup Direct Memory Access Control(DMAC)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/*******************************************************************************
|
||||
* Global type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 通道
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_channel
|
||||
{
|
||||
DmaCh0 = 0x00, ///< DMA 通道0
|
||||
DmaCh1 = 0x04, ///< DMA 通道1
|
||||
} en_dma_channel_t;
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 优先级
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_priority
|
||||
{
|
||||
DmaMskPriorityFix = 0x00000000, ///< DMA 各通道优先级固定 (CH0>CH1)
|
||||
DmaMskPriorityLoop = 0x10000000, ///< DMA 各通道优先级采用轮询方式
|
||||
} en_dma_priority_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 传输数据宽度
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_transfer_width
|
||||
{
|
||||
DmaMsk8Bit = 0x00000000, ///< 8 bit 字节传输
|
||||
DmaMsk16Bit = 0x04000000, ///< 16 bit 半字传输
|
||||
DmaMsk32Bit = 0x08000000 ///< 32 bit 字传输
|
||||
} en_dma_transfer_width_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 传输模式:块(Block)传输或者突发(Burst)传输
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_transfer_mode
|
||||
{
|
||||
DmaMskBlock = 0x00000000, ///< 块(Block)传输
|
||||
DmaMskBurst = 0x10000000, ///< 突发(Burst)传输
|
||||
} en_dma_transfer_mode_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA传输当前状态
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_stat
|
||||
{
|
||||
DmaDefault = 0U, ///< 初始值
|
||||
DmaAddOverflow = 1U, ///< 传输错误引起中止(地址溢出)
|
||||
DmaHALT = 2U, ///< 传输停止请求引起中止(外设停止请求引起的停止或者EB/DE位引起的禁止传输)
|
||||
DmaAccSCRErr = 3U, ///< 传输错误引起中止(传输源地址访问错误)
|
||||
DmaAccDestErr = 4U, ///< 传输错误引起中止(传输目的地址访问错误)
|
||||
DmaTransferComplete = 5U, ///< 成功传输完成
|
||||
DmaTransferPause = 7U, ///< 传输暂停
|
||||
} en_dma_stat_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA源地址控制模式:自增或固定
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_src_address_mode
|
||||
{
|
||||
DmaMskSrcAddrInc = 0x00000000, ///< 地址自增
|
||||
DmaMskSrcAddrFix = 0x02000000, ///< 地址固定
|
||||
} en_src_address_mode_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA目的地址控制模式:自增或固定
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dst_address_mode
|
||||
{
|
||||
DmaMskDstAddrInc = 0x00000000, ///< 地址自增
|
||||
DmaMskDstAddrFix = 0x01000000, ///< 地址固定
|
||||
} en_dst_address_mode_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA CONFA:BC[3:0]和CONFA:TC[15:0]的重载功能
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_bc_tc_reload_mode
|
||||
{
|
||||
DmaMskBcTcReloadDisable = 0x00000000, ///< 禁止重载
|
||||
DmaMskBcTcReloadEnable = 0x00800000, ///< 使能重载
|
||||
} en_bc_tc_reload_mode_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA源地址重载功能:使能或禁止
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_src_address_reload_mode
|
||||
{
|
||||
DmaMskSrcAddrReloadDisable = 0x00000000, ///< 禁止DMA源地址重载
|
||||
DmaMskSrcAddrReloadEnable = 0x00400000, ///< 使能DMA源地址重载
|
||||
} en_src_address_reload_mode_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA目的地址重载功能:使能或禁止
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dst_address_reload_mode
|
||||
{
|
||||
DmaMskDstAddrReloadDisable = 0x00000000, ///< 禁止DMA目的地址重载
|
||||
DmaMskDstAddrReloadEnable = 0x00200000, ///< 使能DMA目的地址重载
|
||||
} en_dst_address_reload_mode_t;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 连续传输设置
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum en_dma_msk
|
||||
{
|
||||
DmaMskOneTransfer = 0x00000000, ///< 传输一次,DMAC传输完成时清除CONFA:ENS位
|
||||
DmaMskContinuousTransfer = 0x00000001, ///< 连续传输,DMAC传输完成时不清除CONFA:ENS位
|
||||
} en_dma_msk_t;
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA 触发源选择
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef enum stc_dma_trig_sel
|
||||
{
|
||||
DmaSWTrig = 0U, ///< Select DMA software trig
|
||||
DmaSPI0RXTrig = 64U, ///< Select DMA hardware trig 0
|
||||
DmaSPI0TXTrig = 65U, ///< Select DMA hardware trig 1
|
||||
DmaSPI1RXTrig = 66U, ///< Select DMA hardware trig 2
|
||||
DmaSPI1TXTrig = 67U, ///< Select DMA hardware trig 3
|
||||
DmaADCJQRTrig = 68U, ///< Select DMA hardware trig 4
|
||||
DmaADCSQRTrig = 69U, ///< Select DMA hardware trig 5
|
||||
DmaLCDTxTrig = 70U, ///< Select DMA hardware trig 6
|
||||
DmaUart0RxTrig = 72U, ///< Select DMA hardware trig 8
|
||||
DmaUart0TxTrig = 73U, ///< Select DMA hardware trig 9
|
||||
DmaUart1RxTrig = 74U, ///< Select DMA hardware trig 10
|
||||
DmaUart1TxTrig = 75U, ///< Select DMA hardware trig 11
|
||||
DmaLpUart0RxTrig = 76U, ///< Select DMA hardware trig 12
|
||||
DmaLpUart0TxTrig = 77U, ///< Select DMA hardware trig 13
|
||||
DmaLpUart1RxTrig = 78U, ///< Select DMA hardware trig 14
|
||||
DmaLpUart1TxTrig = 79U, ///< Select DMA hardware trig 15
|
||||
DmaDAC0Trig = 80U, ///< Select DMA hardware trig 16
|
||||
DmaDAC1Trig = 81U, ///< Select DMA hardware trig 17
|
||||
DmaTIM0ATrig = 82U, ///< Select DMA hardware trig 18
|
||||
DmaTIM0BTrig = 83U, ///< Select DMA hardware trig 19
|
||||
DmaTIM1ATrig = 84U, ///< Select DMA hardware trig 20
|
||||
DmaTIM1BTrig = 85U, ///< Select DMA hardware trig 21
|
||||
DmaTIM2ATrig = 86U, ///< Select DMA hardware trig 22
|
||||
DmaTIM2BTrig = 87U, ///< Select DMA hardware trig 23
|
||||
DmaTIM3ATrig = 88U, ///< Select DMA hardware trig 24
|
||||
DmaTIM3BTrig = 89U, ///< Select DMA hardware trig 25
|
||||
DmaTIM4ATrig = 90U, ///< Select DMA hardware trig 26
|
||||
DmaTIM4BTrig = 91U, ///< Select DMA hardware trig 27
|
||||
DmaTIM5ATrig = 92U, ///< Select DMA hardware trig 28
|
||||
DmaTIM5BTrig = 93U, ///< Select DMA hardware trig 29
|
||||
DmaTIM6ATrig = 94U, ///< Select DMA hardware trig 30
|
||||
DmaTIM6BTrig = 95U, ///< Select DMA hardware trig 31
|
||||
DmaUart2RxTrig = 96U, ///< Select DMA hardware trig 32
|
||||
DmaUart2TxTrig = 97U, ///< Select DMA hardware trig 33
|
||||
DmaUart3RxTrig = 98U, ///< Select DMA hardware trig 34
|
||||
DmaUart3TxTrig = 99U, ///< Select DMA hardware trig 35
|
||||
}en_dma_trig_sel_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief DMA通道初始化配置结构体
|
||||
**
|
||||
******************************************************************************/
|
||||
typedef struct stc_dma_cfg
|
||||
{
|
||||
en_dma_transfer_mode_t enMode;
|
||||
|
||||
uint16_t u16BlockSize; ///< 块传输个数
|
||||
uint16_t u16TransferCnt; ///< 传输块次数
|
||||
en_dma_transfer_width_t enTransferWidth; ///< 传输数据字节宽度 具体参考枚举定义:en_dma_transfer_width_t
|
||||
|
||||
en_src_address_mode_t enSrcAddrMode; ///< DMA源地址控制模式:自增或固定
|
||||
en_dst_address_mode_t enDstAddrMode; ///< DMA目的地址控制模式:自增或固定
|
||||
|
||||
en_src_address_reload_mode_t enSrcAddrReloadCtl; ///< 源地址重载 具体参考枚举定义:en_src_address_reload_mode_t
|
||||
en_dst_address_reload_mode_t enDestAddrReloadCtl;///< 目的地址重载 具体参考枚举定义:en_dst_address_reload_mode_t
|
||||
en_bc_tc_reload_mode_t enSrcBcTcReloadCtl; ///< Bc/Tc值重载功能 具体参考枚举定义:en_bc_tc_reload_mode_t
|
||||
|
||||
uint32_t u32SrcAddress; ///< 源地址>
|
||||
uint32_t u32DstAddress; ///< 目的地址>
|
||||
|
||||
en_dma_msk_t enTransferMode; ///DMA 连续传输设置 具体参考枚举定义:en_dma_msk_t
|
||||
en_dma_priority_t enPriority; ///DMA 优先级设定 具体参考枚举定义:en_dma_priority_t
|
||||
en_dma_trig_sel_t enRequestNum; ///<DMA 触发源选择 具体参考枚举定义:en_dma_trig_sel_t
|
||||
} stc_dma_cfg_t;
|
||||
|
||||
/*******************************************************************************
|
||||
* Global pre-processor symbols/macros ('#define')
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///< 初始化DMAC通道
|
||||
en_result_t Dma_InitChannel(en_dma_channel_t enCh, stc_dma_cfg_t* pstcCfg);
|
||||
|
||||
///< DMA模块使能函数,使能所有通道的操作,每个通道按照各自设置工作
|
||||
void Dma_Enable(void);
|
||||
///< DMA模块功能禁止函数,所有通道禁止工作.
|
||||
void Dma_Disable(void);
|
||||
|
||||
///< 触发指定DMA通道软件传输功能.
|
||||
void Dma_SwStart(en_dma_channel_t enCh);
|
||||
///< 停止指定DMA通道软件传输功能.
|
||||
void Dma_SwStop(en_dma_channel_t enCh);
|
||||
|
||||
///< 使能指定dma通道的(传输完成)中断.
|
||||
void Dma_EnableChannelIrq(en_dma_channel_t enCh);
|
||||
///< 禁用指定dma通道的(传输完成)中断.
|
||||
void Dma_DisableChannelIrq(en_dma_channel_t enCh);
|
||||
///< 使能指定dma通道的(传输错误)中断..
|
||||
void Dma_EnableChannelErrIrq(en_dma_channel_t enCh);
|
||||
///< 禁用指定dma通道的(传输错误)中断..
|
||||
void Dma_DisableChannelErrIrq(en_dma_channel_t enCh);
|
||||
|
||||
///< 使能指定dma通道
|
||||
void Dma_EnableChannel(en_dma_channel_t enCh);
|
||||
///< 禁用指定dma通道
|
||||
void Dma_DisableChannel(en_dma_channel_t enCh);
|
||||
|
||||
///< 设定指定通道的块(Block)尺寸
|
||||
void Dma_SetBlockSize(en_dma_channel_t enCh, uint16_t u16BlkSize);
|
||||
///< 设定指定通道块(Block)传输次数
|
||||
void Dma_SetTransferCnt(en_dma_channel_t enCh, uint16_t u16TrnCnt);
|
||||
|
||||
///< 允许指定通道可连续传输,即DMAC在传输完成时不清除CONFA:ENS位.
|
||||
void Dma_EnableContinusTranfer(en_dma_channel_t enCh);
|
||||
///< 禁止指定通道连续传输,即DMAC在传输完成时清除.
|
||||
void Dma_DisableContinusTranfer(en_dma_channel_t enCh);
|
||||
|
||||
///< 暂停所有dma通道.
|
||||
void Dma_HaltTranfer(void);
|
||||
///< 恢复(之前暂停的)所有dma通道.
|
||||
void Dma_RecoverTranfer(void);
|
||||
///< 暂停指定dma通道.
|
||||
void Dma_PauseChannelTranfer(en_dma_channel_t enCh);
|
||||
///< 恢复(之前暂定的)指定dma通道.
|
||||
void Dma_RecoverChannelTranfer(en_dma_channel_t enCh);
|
||||
|
||||
///< 设定指定通道传输数据宽度.
|
||||
void Dma_SetTransferWidth(en_dma_channel_t enCh, en_dma_transfer_width_t enWidth);
|
||||
///< 设定dma通道优先级.
|
||||
void Dma_SetChPriority(en_dma_priority_t enPrio);
|
||||
|
||||
///< 获取指定DMA通道的状态.
|
||||
en_dma_stat_t Dma_GetStat(en_dma_channel_t enCh);
|
||||
///< 清除指定DMA通道的状态值.
|
||||
void Dma_ClrStat(en_dma_channel_t enCh);
|
||||
|
||||
///<设定指定通道源地址
|
||||
void Dma_SetSourceAddress(en_dma_channel_t enCh, uint32_t u32Address);
|
||||
///<设定指定通道目标地址.
|
||||
void Dma_SetDestinationAddress(en_dma_channel_t enCh, uint32_t u32Address);
|
||||
//@} // DmacGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DMAC_H__ */
|
||||
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
@@ -0,0 +1,167 @@
|
||||
/*************************************************************************************
|
||||
* Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file flash.h
|
||||
**
|
||||
** FLASH 数据结构及API声明.
|
||||
**
|
||||
** - 2017-05-02 LuX V1.0
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __FLASH_H__
|
||||
#define __FLASH_H__
|
||||
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup FlashGroup Flash Controller (Flash)
|
||||
**
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Flash中断类型重定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_flash_int_type
|
||||
{
|
||||
FlashPCInt = 0x01u, ///<擦写PC地址报警中断
|
||||
FlashSlockInt = 0x02u, ///<擦写保护报警中断
|
||||
} en_flash_int_type_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Flash读等待周期类型重定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_flash_waitcycle
|
||||
{
|
||||
FlashWaitCycle0 = 0u, ///< 读等待周期设置为0-即读周期为1(当HCLK小于等于24MHz时)
|
||||
FlashWaitCycle1 = 1u, ///< 读等待周期设置为1-即读周期为2(当HCLK大于24MHz时必须至少为1)
|
||||
FlashWaitCycle2 = 2u, ///< 读等待周期设置为2-即读周期为3(当HCK大于48MHz时必须至少为2)
|
||||
} en_flash_waitcycle_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Flash擦写保护范围重定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_flash_lock
|
||||
{
|
||||
FlashLock0 = 0u, ///<LOCK0
|
||||
FlashLock1 = 1u, ///<LOCK1
|
||||
} en_flash_lock_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Redefinition of FLASH register structure
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///<Flash 初始化配置(中断函数、编程时间参数及休眠模式配置)
|
||||
en_result_t Flash_Init(uint8_t u8FreqCfg, boolean_t bDpstbEn);
|
||||
|
||||
///<Flash 页/全片擦除
|
||||
en_result_t Flash_SectorErase(uint32_t u32SectorAddr);
|
||||
en_result_t Flash_ChipErase(void);
|
||||
|
||||
///<Flash 字节/半字/字写
|
||||
en_result_t Flash_WriteByte(uint32_t u32Addr, uint8_t u8Data);
|
||||
en_result_t Flash_WriteHalfWord(uint32_t u32Addr, uint16_t u16Data);
|
||||
en_result_t Flash_WriteWord(uint32_t u32Addr, uint32_t u32Data);
|
||||
|
||||
///<Flash 编程保护加锁/解锁
|
||||
void Flash_LockAll(void);
|
||||
void Flash_UnlockAll(void);
|
||||
en_result_t Flash_LockSet(en_flash_lock_t enLock, uint32_t u32LockValue);
|
||||
|
||||
|
||||
///<Flash 读等待周期设定
|
||||
en_result_t Flash_WaitCycle(en_flash_waitcycle_t enWaitCycle);
|
||||
|
||||
///<中断相关函数
|
||||
///<中断使能/禁止
|
||||
en_result_t Flash_EnableIrq(en_flash_int_type_t enFlashIntType);
|
||||
en_result_t Flash_DisableIrq(en_flash_int_type_t enFlashIntType);
|
||||
///<中断标志获取
|
||||
boolean_t Flash_GetIntFlag(en_flash_int_type_t enFlashIntType);
|
||||
///<中断标志清除
|
||||
en_result_t Flash_ClearIntFlag(en_flash_int_type_t enFlashIntType);
|
||||
|
||||
//@} // FlashGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __FLASH_H__ */
|
||||
/******************************************************************************/
|
||||
/* EOF (not truncated) */
|
||||
/******************************************************************************/
|
||||
+1227
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,148 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file i2c.h
|
||||
**
|
||||
** Headerfile for I2C functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2018-03-1 CJ First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __I2C_H__
|
||||
#define __I2C_H__
|
||||
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \defgroup I2cGroup Inter-Integrated Circuit (I2C)
|
||||
**
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief I2C功能配置
|
||||
*****************************************************************************/
|
||||
typedef enum en_i2c_func
|
||||
{
|
||||
I2cModule_En = 6u, ///<I2C模块使能
|
||||
I2cStart_En = 5u, ///<开始信号
|
||||
I2cStop_En = 4u, ///<结束信号
|
||||
I2cAck_En = 2u, ///<应答信号
|
||||
I2cHlm_En = 0u, ///<高速使能
|
||||
}en_i2c_func_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief I2C模式配置
|
||||
*****************************************************************************/
|
||||
typedef enum en_i2c_mode
|
||||
{
|
||||
I2cMasterMode = 0x40u, ///<I2C主机模式
|
||||
I2cSlaveMode = 0x44u, ///<I2C从机模式
|
||||
}en_i2c_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief I2C初始化配置结构
|
||||
*****************************************************************************/
|
||||
typedef struct stc_i2c_cfg
|
||||
{
|
||||
uint32_t u32Pclk; ///<Pclk 设置(Hz)
|
||||
uint32_t u32Baud; ///<I2C通信波特率(Hz)
|
||||
en_i2c_mode_t enMode; ///<I2C主从模式配置
|
||||
uint8_t u8SlaveAddr; ///<从机地址配置(如果需要)
|
||||
boolean_t bGc; ///<广播地址使能(如果需要)
|
||||
}stc_i2c_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
//I2C初始化函数
|
||||
en_result_t I2C_Init(M0P_I2C_TypeDef* I2Cx,stc_i2c_cfg_t *pstcI2CCfg);
|
||||
//设置波特率配置寄存器
|
||||
en_result_t I2C_SetBaud(M0P_I2C_TypeDef* I2Cx,uint8_t u8Tm);
|
||||
//I2C功能设置函数
|
||||
en_result_t I2C_SetFunc(M0P_I2C_TypeDef* I2Cx,en_i2c_func_t enFunc);
|
||||
//I2C功能清除函数
|
||||
en_result_t I2C_ClearFunc(M0P_I2C_TypeDef* I2Cx,en_i2c_func_t enFunc);
|
||||
//获取中断标记SI
|
||||
boolean_t I2C_GetIrq(M0P_I2C_TypeDef* I2Cx);
|
||||
//清除中断标记SI
|
||||
en_result_t I2C_ClearIrq(M0P_I2C_TypeDef* I2Cx);
|
||||
//获取状态
|
||||
uint8_t I2C_GetState(M0P_I2C_TypeDef* I2Cx);
|
||||
|
||||
//字节写函数
|
||||
en_result_t I2C_WriteByte(M0P_I2C_TypeDef* I2Cx,uint8_t u8Data);
|
||||
|
||||
//字节读函数
|
||||
uint8_t I2C_ReadByte(M0P_I2C_TypeDef* I2Cx);
|
||||
|
||||
//@} // I2cGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __I2C_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file lcd.h
|
||||
**
|
||||
** Header file for lcd Converter functions
|
||||
** @link LCD Group Some description @endlink
|
||||
**
|
||||
** - 2019-04-02 First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
#ifndef __LCD_H__
|
||||
#define __LCD_H__
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/******************************************************************************
|
||||
** Global type definitions
|
||||
*****************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD bias源选择
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdInResHighPower = 6,//内部电阻分压,大功耗模式
|
||||
LcdInResLowPower = 4,//内部电阻分压,小功耗模式
|
||||
LcdInResMidPower = 2,//内部电阻分压,中功耗模式
|
||||
LcdExtCap = 1,//电容分压模式,需要外部电路配合
|
||||
LcdExtRes = 0,//外部电阻模式,需要外部电路配合
|
||||
}en_lcd_biassrc_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD duty选择 LCD_CR0 Duty
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdStatic = 0u, // 静态显示
|
||||
LcdDuty2 = 1u, // 1/2duty
|
||||
LcdDuty3 = 2u, // 1/3duty
|
||||
LcdDuty4 = 3u, // 1/4duty
|
||||
LcdDuty6 = 5u, // 1/6duty
|
||||
LcdDuty8 = 7u, // 1/8duty
|
||||
}en_lcd_duty_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD bias配置位 LCD_CR0 Bias
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdBias3 = 0u, // 1/3 BIAS
|
||||
LcdBias2 = 1u, // 1/2 BIAS
|
||||
}en_lcd_bias_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD 电压泵时钟频率选择 LCD_CR0 CpClk
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdClk2k = 0u, // 2k
|
||||
LcdClk4k = 1u, // 4k
|
||||
LcdClk8k = 2u, // 8k
|
||||
LcdClk16k = 3u // 16k
|
||||
}en_lcd_cpclk_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD 扫描频率选择 LCD_CR0 LcdClk
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdClk64hz = 0u, // 64hz
|
||||
LcdClk128hz = 1u, // 128hz
|
||||
LcdClk256hz = 2u, // 256hz
|
||||
LcdClk512hz = 3u // 512hz
|
||||
}en_lcd_scanclk_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD 使能控制 LCD_CR0 EN
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdEnable =1u, //LCD使能
|
||||
LcdDisable =0u //LCD禁止
|
||||
}en_lcd_en_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD显示模式 LCD_CR1 Mode
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdMode0 = 0,///<模式0
|
||||
LcdMode1 = 1,///<模式1
|
||||
}en_lcd_dispmode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD时钟源选择 LCD_CR1 ClkSrc
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdXTL = 1,///<外部XTL
|
||||
LcdRCL = 0,///<内部RCL
|
||||
}en_lcd_clk_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD CR1寄存器的使能位、标志位
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LcdBlinkEn = 6u, //LCD闪屏配置位
|
||||
LcdIe = 9u, //LCD 中断使能位
|
||||
LcdDmaEn = 10u, //LCD DMA硬件触发使能位
|
||||
}en_cr1_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD显示SEG COM端口寄存器的配置
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t u32Seg0_31; ///<SEG0-31配置
|
||||
union{
|
||||
uint32_t seg32_51_com0_8;
|
||||
struct
|
||||
{
|
||||
uint32_t Seg32_35 :4;
|
||||
uint32_t Seg36Com7 :1;
|
||||
uint32_t Seg37Com6 :1;
|
||||
uint32_t Seg38Com5 :1;
|
||||
uint32_t Seg39Com4 :1;
|
||||
uint32_t Seg40 :1;
|
||||
uint32_t Seg41 :1;
|
||||
uint32_t Seg42 :1;
|
||||
uint32_t Seg43 :1;
|
||||
uint32_t Mux :1;
|
||||
uint32_t Seg44 :1;
|
||||
uint32_t Seg45 :1;
|
||||
uint32_t Seg46 :1;
|
||||
uint32_t Seg47 :1;
|
||||
uint32_t Seg48 :1;
|
||||
uint32_t Seg49 :1;
|
||||
uint32_t Seg50 :1;
|
||||
uint32_t Seg51 :1;
|
||||
uint32_t Com0_3 :4;
|
||||
}segcom_bit;
|
||||
}stc_seg32_51_com0_8_t;
|
||||
}stc_lcd_segcom_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LCD端口配置参数
|
||||
*****************************************************************************/
|
||||
typedef struct stc_lcd_segcompara
|
||||
{
|
||||
en_lcd_duty_t LcdDuty; ///<占空比
|
||||
en_lcd_biassrc_t LcdBiasSrc; ///<时钟源
|
||||
uint8_t u8MaxSeg; ///<最大SEG口
|
||||
}stc_lcd_segcompara_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief I2C初始化配置结构
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_lcd_biassrc_t LcdBiasSrc; //偏置源选择
|
||||
en_lcd_duty_t LcdDuty; //duty配置选择
|
||||
en_lcd_bias_t LcdBias; //偏压选择
|
||||
en_lcd_cpclk_t LcdCpClk; //电压泵时钟频率选择
|
||||
en_lcd_scanclk_t LcdScanClk; //扫描频率选择
|
||||
en_lcd_dispmode_t LcdMode; //显示模式选择
|
||||
en_lcd_clk_t LcdClkSrc; //时钟源选择
|
||||
en_lcd_en_t LcdEn; //LCD使能
|
||||
}stc_lcd_cfg_t;
|
||||
|
||||
/*******************************************************************************
|
||||
** \brief lcd相关函数声明
|
||||
******************************************************************************/
|
||||
|
||||
extern boolean_t Lcd_GetItStatus(void);
|
||||
extern void Lcd_ClearItPendingBit(void);
|
||||
extern en_result_t Lcd_GetSegCom(stc_lcd_segcompara_t *pstcSegComPara,stc_lcd_segcom_t *pstcSegCom);
|
||||
extern void Lcd_SetSegCom(stc_lcd_segcom_t *pstcSegCom);
|
||||
extern void Lcd_Init(stc_lcd_cfg_t *pstcLcdCfg);
|
||||
extern void Lcd_FullDisp(void);
|
||||
extern void Lcd_ClearDisp(void);
|
||||
extern en_result_t Lcd_WriteRam(uint8_t u8Row,uint32_t u32Data);
|
||||
|
||||
|
||||
//@} // LCDGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __LCD_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file lpm.h
|
||||
**
|
||||
** Lpm 数据结构及API声明
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2017-06-06 Lux V1.0
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __LPM_H__
|
||||
#define __LPM_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \defgroup LpmGroup Low Power Management (LPM)
|
||||
**
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
** Global pre-processor symbols/macros ('#define')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
///<功能配置及操作函数
|
||||
///<进入普通休眠模式
|
||||
void Lpm_GotoSleep(boolean_t bOnExit);
|
||||
///<进入深度休眠模式
|
||||
void Lpm_GotoDeepSleep(boolean_t bOnExit);
|
||||
|
||||
//@} // LpmGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __LPM_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file lptim.h
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-09 First version
|
||||
**
|
||||
*****************************************************************************/
|
||||
#ifndef __LPTIM_H__
|
||||
#define __LPTIM_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx 预除频
|
||||
** \note LPTIMx_CR PRS 在定时器运行时不可以更改该值
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimPrsDiv1 = 0, // 1分频
|
||||
LptimPrsDiv2 = 1, // 2分频
|
||||
LptimPrsDiv4 = 2, // 4分频
|
||||
LptimPrsDiv8 = 3, // 8分频
|
||||
LptimPrsDiv16 = 4, // 16分频
|
||||
LptimPrsDiv32 = 5, // 32分频
|
||||
LptimPrsDiv64 = 6, // 64分频
|
||||
LptimPrsDiv256 = 7 // 256分频
|
||||
}en_lptim_prs_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx 时钟选择
|
||||
** \note LPTIMx_CR TCK_SEL
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimPclk = 0,
|
||||
LptimXtl = 2,
|
||||
LptimRcl = 3
|
||||
}en_lptim_tcksel_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx GATE极性控制位
|
||||
** \note LPTIMx_CR GATE_P
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimGatePLow = 0,
|
||||
LptimGatePHigh = 1
|
||||
}en_lptim_gatep_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx 时钟选择
|
||||
** \note LPTIMx_CR GATE
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimGateLow = 0,
|
||||
LptimGateHigh = 1
|
||||
}en_lptim_gate_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx TOG输出使能位
|
||||
** \note LPTIMx_CR TOG
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimTogEnLow = 0,
|
||||
LptimTogEnHigh = 1
|
||||
}en_lptim_togen_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx CT计数器/定时器功能选择
|
||||
** \note LPTIMx_CR CT
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimTimerFun = 0, //警示器功能,定时器使用TCK_SEL选择的时钟进行计数
|
||||
LptimCntFun = 1 //计数器功能,计数器使用外部输入的下降沿进行计数,采样时钟使用TCK_SEL选择的时钟
|
||||
}en_lptim_ct_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx 定时器工作模式
|
||||
** \note LPTIMx_CR MD
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
LptimMode1 = 0, //模式1无重载16位计数器/定时器
|
||||
LptimMode2 = 1 //模式2自动重载16位计数器/定时器
|
||||
}en_lptim_md_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief LPTIMx 初始化配置的结构体
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_lptim_prs_t enPrs;
|
||||
en_lptim_tcksel_t enTcksel;
|
||||
en_lptim_gatep_t enGatep;
|
||||
en_lptim_gate_t enGate;
|
||||
en_lptim_togen_t enTogen;
|
||||
en_lptim_ct_t enCt;
|
||||
en_lptim_md_t enMd;
|
||||
uint16_t u16Arr;
|
||||
}stc_lptim_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
extern void Lptim_ConfIt(M0P_LPTIMER_TypeDef* Lptimx, boolean_t NewStatus);
|
||||
extern void Lptim_Cmd(M0P_LPTIMER_TypeDef* Lptimx, boolean_t NewStatus);
|
||||
extern boolean_t Lptim_GetItStatus(M0P_LPTIMER_TypeDef* Lptimx);
|
||||
extern void Lptim_ClrItStatus(M0P_LPTIMER_TypeDef* Lptimx);
|
||||
extern en_result_t Lptim_Init(M0P_LPTIMER_TypeDef* Lptimx, stc_lptim_cfg_t* InitStruct);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif //__LPTIM_H__
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
@@ -0,0 +1,276 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file lpuart.h
|
||||
**
|
||||
** Headerfile for LPUART functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2017-05-10 Cathy First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __LPUART_H__
|
||||
#define __LPUART_H__
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup LPUartGroup Universal Asynchronous Receiver/Transmitter (LPUART)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
**\brief LPuart通道选择
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 的sclk时钟源选择
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_lpuart_sclk_sel
|
||||
{
|
||||
LPUartMskPclk = 0u<<11, ///<pclk
|
||||
LPUartMskXtl = 2u<<11, ///<外部低速晶振
|
||||
LPUartMskRcl = 3u<<11, ///<内部低速晶振
|
||||
} en_lpuart_sclksel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart多机模式地址帧/数据帧或者奇偶校验
|
||||
******************************************************************************/
|
||||
typedef enum en_lpuart_mmdorck
|
||||
{
|
||||
LPUartDataOrAddr = 0u, ///<多机模式时,通过读写SBUF[8]决定帧为数据帧或地址帧
|
||||
LPUartEven = 0x4u, ///<非多机模式偶校验
|
||||
LPUartOdd = 0x8u, ///<非多机模式奇校验
|
||||
}en_lpuart_mmdorck_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart多机模式及从机地址和地址掩码配置
|
||||
******************************************************************************/
|
||||
|
||||
typedef struct stc_lpuart_multimode
|
||||
{
|
||||
uint8_t u8SlaveAddr; ///<从机地址
|
||||
uint8_t u8SaddEn; ///<从及地址掩码
|
||||
}stc_lpuart_multimode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 四种工作模式选择
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_lpuart_mode
|
||||
{
|
||||
LPUartMskMode0 = 0x00u, ///<模式0
|
||||
LPUartMskMode1 = 0x40u, ///<模式1
|
||||
LPUartMskMode2 = 0x80u, ///<模式2
|
||||
LPUartMskMode3 = 0xc0u, ///<模式3
|
||||
} en_lpuart_mode_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart stop长度选择
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_lpuart_stop
|
||||
{
|
||||
LPUart1bit = 0x0000u, ///<1位停止位
|
||||
LPUart1_5bit = 0x4000u, ///<1.5位停止位
|
||||
LPUart2bit = 0x8000u, ///<2位停止位
|
||||
} en_lpuart_stop_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 功能使能
|
||||
******************************************************************************/
|
||||
typedef enum en_lpuart_func
|
||||
{
|
||||
LPUartRenFunc = 4u, ///<0-TX; ///<1-非mode0模式代表RX&TX ,mode0模式代表RX;
|
||||
LPUartDmaRxFunc = 16u, ///<DMA接收功能
|
||||
LPUartDmaTxFunc = 17u, ///<DMA发送功能
|
||||
LPUartRtsFunc = 18u, ///<硬件流RTS功能
|
||||
LPUartCtsFunc = 19u, ///<硬件流CTS功能
|
||||
LPUartHdFunc = 22u, ///<单线半双工功能
|
||||
}en_lpuart_func_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart中断使能控制
|
||||
******************************************************************************/
|
||||
typedef enum en_lpuart_irq_sel
|
||||
{
|
||||
LPUartRxIrq = 0u, ///<接收中断使能
|
||||
LPUartTxIrq = 1u, ///<发送中断使能
|
||||
LPUartTxEIrq = 8u, ///<TX空中断使能
|
||||
LPUartPEIrq = 13u, ///<奇偶校验中断使能
|
||||
LPUartCtsIrq = 20u, ///<CTS信号翻转中断使能
|
||||
LPUartFEIrq = 21u, ///<帧错误中断使能
|
||||
}en_lpuart_irq_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 状态标志位
|
||||
******************************************************************************/
|
||||
typedef enum en_lpuart_status
|
||||
{
|
||||
LPUartRC = 0u, ///<接收数据完成标记
|
||||
LPUartTC = 1u, ///<发送数据完成标记
|
||||
LPUartFE = 2u, ///<帧错误标记
|
||||
LPUartTxe = 3u, ///<TXbuff空标记
|
||||
LPUartPE = 4u, ///<奇偶校验错误标记
|
||||
LPUartCtsIf = 5u, ///<CTS中断标记
|
||||
LPUartCts = 6u, ///<CTS信号标记
|
||||
}en_lpuart_status_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 通道采样分频配置
|
||||
******************************************************************************/
|
||||
typedef enum en_lpuart_clkdiv
|
||||
{
|
||||
LPUartMsk16Or32Div = 0u, ///<模式0无效,模式1/3为16分频,模式2为32分频
|
||||
LPUartMsk8Or16Div = 0x200u, ///<模式0无效,模式1/3为8分频,模式2为16分频
|
||||
LPUartMsk4Or8Div = 0x400u, ///<模式0无效,模式1/3为4分频,模式2为8分频
|
||||
}en_lpuart_clkdiv_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief lpuart 通道Mode1和Mode3波特率计算参数
|
||||
******************************************************************************/
|
||||
typedef struct stc_lpuart_baud
|
||||
{
|
||||
en_lpuart_sclksel_t enSclkSel; ///<传输时钟源选择
|
||||
en_lpuart_clkdiv_t enSclkDiv; ///<采样分频选择
|
||||
uint32_t u32Sclk; ///<sclk
|
||||
uint32_t u32Baud; ///< 波特率
|
||||
} stc_lpuart_baud_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \lpuart 总体配置
|
||||
******************************************************************************/
|
||||
typedef struct stc_lpuart_cfg
|
||||
{
|
||||
en_lpuart_mode_t enRunMode; ///<四种模式配置
|
||||
en_lpuart_mmdorck_t enMmdorCk; ///<校验模式
|
||||
en_lpuart_stop_t enStopBit; ///<停止位长度
|
||||
stc_lpuart_baud_t stcBaud; ///<Mode1/3波特率配置
|
||||
} stc_lpuart_cfg_t;
|
||||
|
||||
// 总初始化处理
|
||||
en_result_t LPUart_Init(M0P_LPUART_TypeDef* LPUARTx, stc_lpuart_cfg_t* pstcCfg);
|
||||
|
||||
// LPUART 单线模式使能/禁止
|
||||
void LPUart_HdModeEnable(M0P_LPUART_TypeDef* LPUARTx);
|
||||
void LPUart_HdModeDisable(M0P_LPUART_TypeDef* LPUARTx);
|
||||
|
||||
|
||||
//TB8数据设置
|
||||
void LPUart_SetTb8(M0P_LPUART_TypeDef* LPUARTx, boolean_t bTB8Value);
|
||||
|
||||
//数据寄存器bit8位获取
|
||||
boolean_t LPUart_GetRb8(M0P_LPUART_TypeDef* LPUARTx);
|
||||
|
||||
//中断相关设置函数使能和禁止
|
||||
en_result_t LPUart_EnableIrq(M0P_LPUART_TypeDef* LPUARTx, en_lpuart_irq_sel_t enIrqSel);
|
||||
en_result_t LPUart_DisableIrq(M0P_LPUART_TypeDef* LPUARTx, en_lpuart_irq_sel_t enIrqSel);
|
||||
|
||||
//特殊功能使能和禁止
|
||||
en_result_t LPUart_EnableFunc(M0P_LPUART_TypeDef* LPUARTx, en_lpuart_func_t enFunc);
|
||||
en_result_t LPUart_DisableFunc(M0P_LPUART_TypeDef* LPUARTx, en_lpuart_func_t enFunc);
|
||||
|
||||
//状态位获取函数
|
||||
boolean_t LPUart_GetStatus(M0P_LPUART_TypeDef* LPUARTx,en_lpuart_status_t enStatus);
|
||||
//状态位的清除
|
||||
en_result_t LPUart_ClrStatus(M0P_LPUART_TypeDef* LPUARTx,en_lpuart_status_t enStatus);
|
||||
//整个状态寄存器获取
|
||||
uint8_t LPUart_GetIsr(M0P_LPUART_TypeDef* LPUARTx);
|
||||
//整个状态寄存器清除
|
||||
en_result_t LPUart_ClrIsr(M0P_LPUART_TypeDef* LPUARTx);
|
||||
|
||||
//数据查询方式的发送
|
||||
en_result_t LPUart_SendData(M0P_LPUART_TypeDef* LPUARTx, uint8_t u8Data);
|
||||
//数据中断方式的发送
|
||||
en_result_t LPUart_SendDataIt(M0P_LPUART_TypeDef* LPUARTx, uint8_t u8Data);
|
||||
//数据接收
|
||||
uint8_t LPUart_ReceiveData(M0P_LPUART_TypeDef* LPUARTx);
|
||||
|
||||
//LPUARTx通道号,enClk 时钟源选项
|
||||
en_result_t LPUart_SelSclk(M0P_LPUART_TypeDef* LPUARTx, en_lpuart_sclksel_t enSclk);
|
||||
|
||||
//LPUART通道多主机模式配置
|
||||
en_result_t LPUart_SetMultiMode(M0P_LPUART_TypeDef* LPUARTx, stc_lpuart_multimode_t* pstcMultiCfg);
|
||||
|
||||
//LPUART通道多主机模式从机地址配置函数
|
||||
en_result_t LPUart_SetSaddr(M0P_LPUART_TypeDef* LPUARTx,uint8_t u8Addr);
|
||||
|
||||
//@} // LPUartGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __UART_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,231 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file lvd.h
|
||||
**
|
||||
** Headerfile for Low Voltage Detector functions
|
||||
**
|
||||
** - 2017-06-28 Alex First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __LVD_H__
|
||||
#define __LVD_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup LvdGroup Low Voltage Detector (LVD)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD监测电压源选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_input_src
|
||||
{
|
||||
LvdInputSrcMskVCC = 0u<<2, ///< Vcc
|
||||
LvdInputSrcMskPC13 = 1u<<2, ///< PC13
|
||||
LvdInputSrcMskPB08 = 2u<<2, ///< PB08
|
||||
LvdInputSrcMskPB07 = 3u<<2, ///< PB07
|
||||
}en_lvd_input_src_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD阈值电压选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_threshold
|
||||
{
|
||||
LvdMskTH1_8V = 0u<<4, ///< 1.8V
|
||||
LvdMskTH1_9V = 1u<<4, ///< 1.9V
|
||||
LvdMskTH2_0V = 2u<<4, ///< 2.0V
|
||||
LvdMskTH2_1V = 3u<<4, ///< 2.1V
|
||||
LvdMskTH2_2V = 4u<<4, ///< 2.2V
|
||||
LvdMskTH2_3V = 5u<<4, ///< 2.3V
|
||||
LvdMskTH2_4V = 6u<<4, ///< 2.4V
|
||||
LvdMskTH2_5V = 7u<<4, ///< 2.5V
|
||||
LvdMskTH2_6V = 8u<<4, ///< 2.6V
|
||||
LvdMskTH2_7V = 9u<<4, ///< 2.7V
|
||||
LvdMskTH2_8V = 10u<<4, ///< 2.8V
|
||||
LvdMskTH2_9V = 11u<<4, ///< 2.9V
|
||||
LvdMskTH3_0V = 12u<<4, ///< 3.0V
|
||||
LvdMskTH3_1V = 13u<<4, ///< 3.1V
|
||||
LvdMskTH3_2V = 14u<<4, ///< 3.2V
|
||||
LvdMskTH3_3V = 15u<<4, ///< 3.3V
|
||||
}en_lvd_threshold_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD输出滤波时间
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_filter_time
|
||||
{
|
||||
LvdFilterMsk7us = 0u<<9, ///< 7us
|
||||
LvdFilterMsk14us = 1u<<9, ///< 14us
|
||||
LvdFilterMsk28us = 2u<<9, ///< 28us
|
||||
LvdFilterMsk112us = 3u<<9, ///< 112us
|
||||
LvdFilterMsk450us = 4u<<9, ///< 450us
|
||||
LvdFilterMsk1_8ms = 5u<<9, ///< 1.8ms
|
||||
LvdFilterMsk7_2ms = 6u<<9, ///< 7.3ms
|
||||
LvdFilterMsk28_8ms = 7u<<9, ///< 28.8ms
|
||||
}en_lvd_filter_time_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD中断触发方式
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_irq_type
|
||||
{
|
||||
LvdIrqMskRiseFall = 3u<<12, ///< 上升/下降沿触发
|
||||
LvdIrqMskHigh = 1u<<14, ///< 高电平触发
|
||||
LvdIrqMskRise = 1u<<13, ///< 上升沿触发
|
||||
LvdIrqMskFall = 1u<<12, ///< 下降沿触发
|
||||
}en_lvd_irq_type_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD触发动作选择
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_act
|
||||
{
|
||||
LvdActMskReset = 1u<<1, ///< 系统复位
|
||||
LvdActMskInt = 0u, ///< NVIC中断
|
||||
}en_lvd_act_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD数字滤波使能配置
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_lvd_filter
|
||||
{
|
||||
LvdFilterMskEnable = 1u<<8, ///< 数字滤波使能
|
||||
LvdFilterMskDisable = 0u, ///< 数字滤波禁止
|
||||
}en_lvd_filter_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief LVD配置
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct stc_lvd_cfg
|
||||
{
|
||||
en_lvd_act_t enAct; ///< LVD触发动作
|
||||
en_lvd_input_src_t enInputSrc; ///< LVD输入电压源
|
||||
en_lvd_threshold_t enThreshold; ///< LVD监测电压
|
||||
en_lvd_filter_t enFilter; ///< 是否使用输出滤波
|
||||
en_lvd_filter_time_t enFilterTime; ///< 输出滤波时间
|
||||
en_lvd_irq_type_t enIrqType; ///< 中断触发方式
|
||||
}stc_lvd_cfg_t;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//irq enable/disable
|
||||
void Lvd_EnableIrq(void);
|
||||
void Lvd_DisableIrq(void);
|
||||
|
||||
// irq function
|
||||
void Lvd_ClearIrq(void);
|
||||
boolean_t Lvd_GetIrqStat(void);
|
||||
|
||||
// fliter function
|
||||
boolean_t Lvd_GetFilterResult(void);
|
||||
|
||||
//init/deinit function
|
||||
void Lvd_Init(stc_lvd_cfg_t *pstcCfg);
|
||||
|
||||
//LVD function enable/disable
|
||||
void Lvd_Enable(void);
|
||||
void Lvd_Disable(void);
|
||||
|
||||
//@} // LvdGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LVD_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
@@ -0,0 +1,152 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file OPA.h
|
||||
**
|
||||
** Headerfile for OPA functions
|
||||
** @link OPA Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-11 First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OPA_H__
|
||||
#define __OPA_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup OPAGroup (OPA)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_opa_oenx
|
||||
{
|
||||
OpaOen1 = 3u, //OUT1
|
||||
OpaOen2 = 4u, //OUT2
|
||||
OpaOen3 = 5u, //OUT3
|
||||
OpaOen4 = 6u //OUT4
|
||||
}en_opa_oenx_t;
|
||||
|
||||
typedef enum en_opa_clksrc // 自动校准脉冲宽度设置
|
||||
{
|
||||
OpaM1Pclk = 0u, // 1个PCLK周期
|
||||
OpaM2Pclk = 1u, // 2个PCLK周期
|
||||
OpaM4Pclk = 2u, // 4个PCLK周期
|
||||
OpaM8Pclk = 3u, // 8个PCLK周期
|
||||
OpaM16Pclk = 4u, // 16个PCLK周期
|
||||
OpaM32Pclk = 5u, // 32个PCLK周期
|
||||
OpaM64Pclk = 6u, // 64个PCLK周期
|
||||
OpaM128Pclk = 7u, // 128个PCLK周期
|
||||
OpaM256Pclk = 8u, // 256个PCLK周期
|
||||
OpaM512Pclk = 9u, // 512个PCLK周期
|
||||
OpaM1024Pclk = 10u, // 1024个PCLK周期
|
||||
OpaM2048Pclk = 11u, // 2048个PCLK周期
|
||||
OpaM4096Pclk = 12u // 4096个PCLK周期
|
||||
}en_opa_clksrc_t;
|
||||
|
||||
typedef enum en_opa_set0ctrl
|
||||
{
|
||||
enClkSwSet = 3u, // 软件校准使能
|
||||
enAzPulse = 2u, // 软件校准
|
||||
enTrigger = 1u, // 软件触发自动教零
|
||||
enAdctr = 1u // 使能ADC启动触发OPA自动校准功能
|
||||
}en_opa_set0ctrl_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
boolean_t bAzen; // 自动教零配置
|
||||
boolean_t bClk_sw_set; // 自动教零选择
|
||||
boolean_t bAz_pulse; // 软件校准设置
|
||||
boolean_t bTrigger; // 软件触发校准设置
|
||||
boolean_t bAdctr_en; // ADC启动触发OPA自动校准设置
|
||||
en_opa_clksrc_t enClksrc; // 自动校准脉冲宽度设置
|
||||
}stc_opa_zcfg_t;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
//OPA 通道使能
|
||||
extern void Opa_Cmd(boolean_t NewStatus);
|
||||
extern void Opa_CmdBuf(boolean_t NewStatus);
|
||||
|
||||
//OPA零点校准配置
|
||||
extern void Opa_SetZero(stc_opa_zcfg_t* InitZero);
|
||||
|
||||
//使能输出OUTX
|
||||
extern void Opa_CmdOnex(en_opa_oenx_t onex, boolean_t NewState);
|
||||
|
||||
//配置校零相关的位
|
||||
extern void Opa_ZeroBitCtrl(en_opa_set0ctrl_t CtrlBit, boolean_t NewState);
|
||||
|
||||
//@} // OPA Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __OPA_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,261 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file pca.h
|
||||
**
|
||||
** PCA(可编程计数阵列)数据结构及API声明
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-09 First version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __PCA_H__
|
||||
#define __PCA_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup PcaGroup Programmable Counter Array (PCA)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 模块选择
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaModule0 = 0, // PCA_0
|
||||
PcaModule1 = 1, // PCA_1
|
||||
PcaModule2 = 2, // PCA_2
|
||||
PcaModule3 = 3, // PCA_3
|
||||
PcaModule4 = 4 // PCA_4
|
||||
}en_pca_module_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 中断标志位 中断清除位
|
||||
** \note PCA_CCON中的CCF0-CCF4与CF; PCA_ICLR中的CCF0-CCF4与CF
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaCcf0 = 0,
|
||||
PcaCcf1 = 1,
|
||||
PcaCcf2 = 2,
|
||||
PcaCcf3 = 3,
|
||||
PcaCcf4 = 4,
|
||||
PcaCf = 7
|
||||
}en_pca_ccficlr_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 时钟分频选择及时钟源选择
|
||||
** \note PCA_CMOD CPS[2:0]
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaPclkdiv32 = 0, // PCLK/32
|
||||
PcaPclkdiv16 = 1, // PCLK/16
|
||||
PcaPclkdiv8 = 2, // PCLK/8
|
||||
PcaPclkdiv4 = 3, // PCLK/4
|
||||
PcaPclkdiv2 = 4, // PCLK/2
|
||||
PcaTim0ovf = 5, // timer0 overflow
|
||||
PcaTim1ovf = 6, // timer1 overflow
|
||||
PcaEci = 7 // ECI外部时钟
|
||||
}en_pca_clksrc_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 允许比较器功能控制
|
||||
** \note PCA_CCAPMx ECOM
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaEcomDisable = 0,
|
||||
PcaEcomEnable = 1
|
||||
}en_pca_ecom_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 正沿捕获控制位
|
||||
** \note PCA_CCAPMx CAPP
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaCappDisable = 0,
|
||||
PcaCappEnable = 1
|
||||
}en_pca_capp_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 负沿捕获控制位
|
||||
** \note PCA_CCAPMx CAPN
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaCapnDisable = 0,
|
||||
PcaCapnEnable = 1
|
||||
}en_pca_capn_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 匹配控制位
|
||||
** \note PCA_CCAPMx MAT
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaMatDisable = 0,
|
||||
PcaMatEnable = 1
|
||||
}en_pca_mat_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 翻转控制位
|
||||
** \note PCA_CCAPMx TOG
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaTogDisable = 0,
|
||||
PcaTogEnable = 1
|
||||
}en_pca_tog_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA PWM控制位
|
||||
** \note PCA_CCAPMx PWM
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaPwm8bitDisable = 0,
|
||||
PcaPwm8bitEnable = 1
|
||||
}en_pca_pwm8bit_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA EPWM控制位
|
||||
** \note PCA_EPWM EPWM
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcaEpwmDisable = 0,
|
||||
PcaEpwmEnable = 1
|
||||
}en_pca_epwm_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCA 初始化配置的结构体
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_pca_clksrc_t pca_clksrc; // PCA_CMOD CPS[2:0]
|
||||
boolean_t pca_cidl; // PCA_CMOD CIDL
|
||||
en_pca_ecom_t pca_ecom; // PCA_CCAPMx ECOM
|
||||
en_pca_capp_t pca_capp; // PCA_CCAPMx CAPP
|
||||
en_pca_capn_t pca_capn; // PCA_CCAPMx CAPN
|
||||
en_pca_mat_t pca_mat; // PCA_CCAPMx MAT
|
||||
en_pca_tog_t pca_tog; // PCA_CCAPMx TOG
|
||||
en_pca_pwm8bit_t pca_pwm; // PCA_CCAPMx PWM
|
||||
en_pca_epwm_t pca_epwm; // PCA_EPWM
|
||||
uint16_t pca_ccap; // PCA_CCAP
|
||||
uint8_t pca_ccapl; // PCA_CCAPL PCA_CCAP的低字节
|
||||
uint8_t pca_ccaph; // PCA_CCAPH PCA_CCAP的高字节
|
||||
uint16_t pca_carr; // PCA_CARR
|
||||
}stc_pcacfg_t;
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
extern boolean_t Pca_GetItStatus(en_pca_ccficlr_t It_Src);
|
||||
extern void Pca_ClrItStatus(en_pca_ccficlr_t It_Src);
|
||||
extern void Pca_StartPca(boolean_t NewStatus);
|
||||
extern void Pca_SetCidl(boolean_t NewStatus);
|
||||
extern void Pca_Set4Wdte(boolean_t NewStatus);
|
||||
extern void Pca_ConfPcaIt(boolean_t NewStatus);
|
||||
extern void Pca_ConfModulexIt(en_pca_module_t Modulex, boolean_t NewStatus);
|
||||
extern void Pca_M0Init(stc_pcacfg_t* InitStruct);
|
||||
extern void Pca_M1Init(stc_pcacfg_t* InitStruct);
|
||||
extern void Pca_M2Init(stc_pcacfg_t* InitStruct);
|
||||
extern void Pca_M3Init(stc_pcacfg_t* InitStruct);
|
||||
extern void Pca_M4Init(stc_pcacfg_t* InitStruct);
|
||||
extern uint16_t Pca_GetCnt(void);
|
||||
extern void Pca_SetCnt(uint16_t cnt);
|
||||
extern boolean_t Pca_GetOut(en_pca_module_t Modulex);
|
||||
extern void Pca_SetCcap(en_pca_module_t Modulex, uint16_t Value);
|
||||
extern uint16_t Pca_GetCcap(en_pca_module_t Modulex);
|
||||
extern void Pca_SetCarr(uint16_t Value);
|
||||
extern uint16_t Pca_GetCarr(void);
|
||||
extern void Pca_SetCcapHL(en_pca_module_t Modulex, uint8_t ValueH, uint8_t ValueL);
|
||||
extern void Pca_GetCcapHL(en_pca_module_t Modulex, uint8_t *ValueH, uint8_t *ValueL);
|
||||
|
||||
//@} // PcaGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __PCA_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
@@ -0,0 +1,233 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file pcnt.h
|
||||
**
|
||||
** Headerfile for PCNT functions
|
||||
** @link PCNT Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-08 First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __PCNT_H__
|
||||
#define __PCNT_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup PCNTGroup (PCNT)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCNT S0通道极性选择
|
||||
** \note PCNT_CTRL S0P
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntS0PNoinvert = 0u, // S0通道极性不取反
|
||||
PcntS0PInvert = 1u // S0通道极性取反
|
||||
}en_pcnt_s0polar_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCNT S1通道极性选择
|
||||
** \note PCNT_CTRL S1P
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntS1PNoinvert = 0u, // S1通道极性不取反
|
||||
PcntS1PInvert = 1u // S1通道极性取反
|
||||
}en_pcnt_s1polar_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCNT 计数方向选择
|
||||
** \note PCNT_CTRL DIR
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntNDoubleDirAdd = 0u, // 加计数
|
||||
PcntNDoubleDirSub = 1u // 减计数
|
||||
}en_pcnt_dir_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCNT 计数时钟选择
|
||||
** \note PCNT_CTRL ClkSel
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntCLKPclk = 1u, // PCLK
|
||||
PcntCLKXtl = 2u, // XTL
|
||||
PcntCLKRcl = 3u // RCL
|
||||
}en_pcnt_clksel_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCNT 脉冲计数模式选择
|
||||
** \note PCNT_CTRL Mode
|
||||
******************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntSingleMode = 1u, // 单通道脉冲计数模式
|
||||
PcntSpecialMode = 2u, // 双通道非正交脉冲计数模式
|
||||
PcntDoubleMode = 3u // 双通道正交脉冲计数模式
|
||||
}en_pcnt_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PCNT 状态
|
||||
** \note PCNT_IFR & PCNT_ICR & PCNT_IEN
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntS1E = 7, // S1通道脉冲解码错误
|
||||
PcntS0E = 6, // S0通道脉冲解码错误
|
||||
PcntBB = 5, // 脉冲解码错误
|
||||
PcntFE = 4, // 采样周期脉冲解码错误
|
||||
PcntDIR = 3, // 反向改变中断
|
||||
PcntTO = 2, // 超时中断标识
|
||||
PcntOV = 1, // 上溢中断标识
|
||||
PcntUF = 0, // 下溢中断标识
|
||||
}en_pcnt_itfce_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PCNT 状态寄存器1 PCNT_SR1
|
||||
** \note PCNT_SR1 : DIR
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntDoubleDirAdd = 0, // 双通道正交脉冲加计数
|
||||
PcntDoubleDirSub = 1 // 双通道正交脉冲加计数
|
||||
}en_pcnt_sr1dir_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PCNT 观测输出选择寄存器 PCNT_DBG
|
||||
** \note PCNT_DBG: DBG
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
PcntDBGZero = 0, // 固定为0
|
||||
PcntDBGSxA = 1, // 脉冲同步之后通过S0A/S1A输出
|
||||
PcntDBGSxP = 2, // 脉冲极性选择之后通过S0P/S1P输出
|
||||
PcntDBGSxPF = 3 // 脉冲滤波之后通过S0PF/S1PF输出
|
||||
}en_pcnt_dbg_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PcntDirUp = 0, //加计数
|
||||
PcntDirDown = 1 //减计数
|
||||
}en_pent_dir_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PCNT 整体配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_pcnt_cfg
|
||||
{
|
||||
en_pcnt_s0polar_t Pcnt_S0Sel; // S0通道极性选择
|
||||
en_pcnt_s1polar_t Pcnt_S1Sel; // S1通道极性选择
|
||||
en_pcnt_clksel_t Pcnt_Clk; // 计数时钟选择
|
||||
en_pcnt_mode_t Pcnt_Mode; // 脉冲计数模式选择
|
||||
boolean_t Pcnt_FltEn; // 脉冲宽度滤波器使能控制 PCNT_FLT: EN
|
||||
uint8_t Pcnt_DebTop; // 计数器阀值 PCNT_FLT: DebTop
|
||||
uint16_t Pcnt_ClkDiv; // 滤波时钟分频系数 PCNT_FLT: ClkDiv
|
||||
boolean_t Pcnt_TocrEn; // 超时功能使能控制位 PCNT_TOCR : EN
|
||||
uint16_t Pcnt_TocrTh; // 超时阈值 PCNT_TOCR : TH
|
||||
en_pcnt_dbg_t Pcnt_Dbg; // 观测输出选择寄存器 PCNT_DBG
|
||||
en_pent_dir_t Pcnt_Dir;
|
||||
}stc_pcnt_initstruct_t;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
extern boolean_t Pcnt_Cmd(boolean_t NewState);
|
||||
extern en_result_t Pcnt_SetB2T(uint16_t value);
|
||||
extern en_result_t Pcnt_SetB2C(uint16_t value);
|
||||
extern en_result_t Pcnt_SetT2C(void);
|
||||
extern void Pcnt_Init(stc_pcnt_initstruct_t* InitStruct);
|
||||
extern void Pcnt_ItCfg(en_pcnt_itfce_t IT_Src, boolean_t NewState);
|
||||
extern boolean_t Pcnt_GetItStatus(en_pcnt_itfce_t IT_Src);
|
||||
extern void Pcnt_ClrItStatus(en_pcnt_itfce_t IT_Src);
|
||||
extern uint16_t Pcnt_GetCnt(void);
|
||||
extern uint16_t Pcnt_GetTop(void);
|
||||
extern uint16_t Pcnt_GetBuf(void);
|
||||
extern void Pcnt_SetCnt(uint16_t value);
|
||||
extern void Pcnt_SetBuf(uint16_t value);
|
||||
extern void Pcnt_SetTop(uint16_t value);
|
||||
//@} // PCNT Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __PCNT_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
/*************************************************************************************
|
||||
* Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file ram.h
|
||||
**
|
||||
** RAM 数据结构及API声明.
|
||||
**
|
||||
** - 2019-04-02 LuX V1.0
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __RAM_H__
|
||||
#define __RAM_H__
|
||||
|
||||
/******************************************************************************/
|
||||
/* Include files */
|
||||
/******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup RamGroup Ram Controller (Ram)
|
||||
**
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Redefinition of RAM register structure
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
///<中断相关函数
|
||||
///<中断使能/禁止
|
||||
void Ram_EnableIrq(void);
|
||||
void Ram_DisableIrq(void);
|
||||
///<中断标志获取
|
||||
boolean_t Ram_GetIntFlag(void);
|
||||
///<中断标志清除
|
||||
void Ram_ClearIntFlag(void);
|
||||
///<奇偶校验出错地址获取
|
||||
uint32_t Ram_ErrAddrGet(void);
|
||||
|
||||
//@} // RamGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __RAM_H__ */
|
||||
/******************************************************************************/
|
||||
/* EOF (not truncated) */
|
||||
/******************************************************************************/
|
||||
@@ -0,0 +1,175 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file reset.h
|
||||
**
|
||||
** Headerfile for reset functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-21 Lux First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __RESET_H__
|
||||
#define __RESET_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup ResetGroup Reset (RST)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 外设复位控制类型定义
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_peripheral0
|
||||
{
|
||||
ResetMskUart0 = 1u<<0u, ///< 串口0
|
||||
ResetMskUart1 = 1u<<1u, ///< 串口1
|
||||
ResetMskLpUart0 = 1u<<2u, ///< 低功耗串口0
|
||||
ResetMskLpUart1 = 1u<<3u, ///< 低功耗串口1
|
||||
ResetMskI2c0 = 1u<<4u, ///< I2C0
|
||||
ResetMskI2c1 = 1u<<5u, ///< I2C1
|
||||
ResetMskSpi0 = 1u<<6u, ///< SPI0
|
||||
ResetMskSpi1 = 1u<<7u, ///< SPI1
|
||||
ResetMskBaseTim = 1u<<8u, ///< 基础定时器TIM0/1/2
|
||||
ResetMskLpTim0 = 1u<<9u, ///< 低功耗定时器0
|
||||
ResetMskAdvTim = 1u<<10u, ///< 高级定时器TIM4/5/6
|
||||
ResetMskTim3 = 1u<<11u, ///< 定时器3
|
||||
ResetMskOpa = 1u<<13u, ///< OPA
|
||||
ResetMskPca = 1u<<14u, ///< 可编程计数阵列
|
||||
ResetMskAdcBgr = 1u<<16u, ///< ADC&BGR
|
||||
ResetMskVcLvd = 1u<<17u, ///< VC和LVD
|
||||
ResetMskRng = 1u<<18u, ///< RNG
|
||||
ResetMskPcnt = 1u<<19u, ///< PCNT
|
||||
ResetMskRtc = 1u<<20u, ///< RTC
|
||||
ResetMskTrim = 1u<<21u, ///< 时钟校准
|
||||
ResetMskLcd = 1u<<22u, ///< LCD
|
||||
ResetMskTick = 1u<<24u, ///< 系统定时器
|
||||
ResetMskSwd = 1u<<25u, ///< SWD
|
||||
ResetMskCrc = 1u<<26u, ///< CRC
|
||||
ResetMskAes = 1u<<27u, ///< AES
|
||||
ResetMskGpio = 1u<<28u, ///< GPIO
|
||||
ResetMskDma = 1u<<29u, ///< DMA
|
||||
}en_reset_peripheral0_t;
|
||||
|
||||
typedef enum en_sysctrl_peripheral1
|
||||
{
|
||||
ResetMskDac = 1u<<3u, ///< DAC
|
||||
ResetMskLpTim1 = 1u<<4u, ///< 低功耗定时器1
|
||||
ResetMskUart2 = 1u<<8u, ///< UART2
|
||||
ResetMskUart3 = 1u<<9u, ///< UART3
|
||||
}en_reset_peripheral1_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 复位源(标识)显示
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_reset_flag
|
||||
{
|
||||
ResetFlagMskPor5V = 1u<<0u, ///< 5V启动复位
|
||||
ResetFlagMskPor1_5V = 1u<<1u, ///< 1.5V启动复位
|
||||
ResetFlagMskLvd = 1u<<2u, ///< 低电压检测复位
|
||||
ResetFlagMskWdt = 1u<<3u, ///< 看门狗复位
|
||||
ResetFlagMskPca = 1u<<4u, ///< PCA复位
|
||||
ResetFlagMskLockup = 1u<<5u, ///< 系统异常复位
|
||||
ResetFlagMskSysreq = 1u<<6u, ///< 软件复位
|
||||
ResetFlagMskRstb = 1u<<7u, ///< RESET脚 复位
|
||||
}en_reset_flag_t;
|
||||
|
||||
/*******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///< 获得复位源状态
|
||||
boolean_t Reset_GetFlag(en_reset_flag_t enRstFlg);
|
||||
///< 清除复位源状态
|
||||
void Reset_ClearFlag(en_reset_flag_t enRstFlg);
|
||||
void Reset_ClearFlagAll(void);
|
||||
|
||||
///< 外设模块复位
|
||||
void Reset_RstPeripheralAll(void);
|
||||
void Reset_RstPeripheral0(en_reset_peripheral0_t enPeri);
|
||||
void Reset_RstPeripheral1(en_reset_peripheral1_t enPeri);
|
||||
|
||||
//@} // ResetGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __RESET_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file rtc.h
|
||||
**
|
||||
** Headerfile for RTC functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-10 First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __RTC_H__
|
||||
#define __RTC_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup RtcGroup Real Time Clock (RTC)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief rtc周期中断的时间间隔 RTC_CR0 PRDS
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcNone = 0u, //无周期中断
|
||||
Rtc05S = 1u, //0.5S中断
|
||||
Rtc1S = 2u, //1秒
|
||||
Rtc1Min = 3u, //1分钟
|
||||
Rtc1H = 4u, //1小时
|
||||
Rtc1Day = 5u, //1天
|
||||
Rtc1Mon = 6u //1月
|
||||
}en_rtc_prds_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief rtc 12h制或24h制方式选择 RTC_CR0 AMPM
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcAm = 0u, //12小时制
|
||||
RtcPm = 1u //24小时制
|
||||
}en_rtc_ampm_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 普通精度与高精度1Hz输出 RTC_CR0 HZ1SEL
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcHz1selGeneralPricision = 0u, //普通精度1Hz输出
|
||||
RtcHz1selHighPricision = 1u //高精度1Hz输出
|
||||
}en_rtc_hz1sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 周期中断选择 RTC_CR0 PRDSEL
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcPrds = 0u, //使用PRDS所设定的周期中断事件间隔
|
||||
RtcPrdx = 1u //使用PRDX所设定的周期中断事件间隔
|
||||
}en_rtc_prdsel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief rtc的时钟选择 RTC_CR1 CKSEL
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcClkXtl = 0u, //外部低速时钟XTL 32.768k
|
||||
RtcClkRcl = 2u, //内部低速时钟RCL 32k
|
||||
RtcClkXth128 = 4u, //外部晶振4M XTH/128
|
||||
RtcClkXth256 = 5u, //外部晶振8M XTH/256
|
||||
RtcClkXth512 = 6u, //外部晶振16M XTH/512
|
||||
RtcClkXth1024 = 7u //外部晶振32M XTH/1024
|
||||
}en_rtc_cksel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 时钟误差补偿使能或禁止 RTC_COMPEN EN
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
RtcCompenDisable = 0u,
|
||||
RtcCompenEnable = 1u
|
||||
}en_rtc_compen_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 配置PRD中断使能及其周期类型
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_rtc_prdsel_t rtcPrdsel;
|
||||
uint8_t rtcPrdx;
|
||||
en_rtc_prds_t rtcPrds;
|
||||
}stc_rtc_cyccfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 闹钟源配置
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t RtcAlarmSec; //闹钟秒钟
|
||||
uint8_t RtcAlarmMinute; //闹钟分钟
|
||||
uint8_t RtcAlarmHour; //闹钟小时
|
||||
uint8_t RtcAlarmWeek; //闹钟周
|
||||
}stc_rtc_alarmtime_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 时间
|
||||
*****************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief rtc时钟年、月、日、时、分、秒读写结构
|
||||
*****************************************************************************/
|
||||
typedef struct stc_rtc_time
|
||||
{
|
||||
uint8_t u8Second; //时间:秒
|
||||
uint8_t u8Minute; //时间:分
|
||||
uint8_t u8Hour; //时间:时
|
||||
uint8_t u8DayOfWeek; //时间:周
|
||||
uint8_t u8Day; //时间:日
|
||||
uint8_t u8Month; //时间:月
|
||||
uint8_t u8Year; //时间:年
|
||||
} stc_rtc_time_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 初始化RTC的结构体
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_rtc_ampm_t rtcAmpm; //小时的时制
|
||||
stc_rtc_cyccfg_t rtcPrdsel; //确定PRDS或者PRDX所设定的周期中断时间间隔类型
|
||||
en_rtc_cksel_t rtcClksrc; //实时时钟的时钟源
|
||||
en_rtc_compen_t rtcCompen; //时钟误差补偿使能与禁止
|
||||
uint16_t rtcCompValue; //使能补偿的情况下,补偿值取值范围为:0-255
|
||||
stc_rtc_time_t rtcTime; //要写入时间寄存器的时间
|
||||
}stc_rtc_initstruct_t;
|
||||
|
||||
/******************************************************************************
|
||||
Global function prototypes (definition in C source)
|
||||
*******************************************************************************/
|
||||
//RTC计数器的使能或停止
|
||||
extern void Rtc_Cmd(boolean_t NewState);
|
||||
//RTC计数器启动等待函数
|
||||
extern void Rtc_StartWait(void);
|
||||
//RTC的1Hz输出的使能或停止
|
||||
extern void Rtc_Hz1Cmd(en_rtc_hz1sel_t pricision, boolean_t NewState);
|
||||
//设置周期中断的类型(PRDSEL)及其所选类型的时间(PRDS或PRDX)
|
||||
extern en_result_t Rtc_SetCyc(stc_rtc_cyccfg_t* pstCyc);
|
||||
//RTC闹钟中断的使能或停止
|
||||
extern void Rtc_AlmIeCmd(boolean_t NewState);
|
||||
//RTC闹钟的使能或停止
|
||||
extern void Rtc_AlmEnCmd(boolean_t NewState);
|
||||
//获取RTC闹钟中断状态位
|
||||
extern boolean_t Rtc_GetAlmfItStatus(void);
|
||||
//清除RTC闹钟中断状态位
|
||||
extern void Rtc_ClearAlmfItStatus(void);
|
||||
//清除RTC周期中断状态位
|
||||
extern void Rtc_ClearPrdfItStatus(void);
|
||||
//获取RTC周期中断状态位
|
||||
extern boolean_t Rtc_GetPridItStatus(void);
|
||||
//配置RTC的误差补偿寄存器
|
||||
extern en_result_t Rtc_CompCfg(uint16_t CompVlue, en_rtc_compen_t NewStatus);
|
||||
//RTC根据日期计算周数
|
||||
extern en_result_t Check_BCD_Format(uint8_t u8data,uint8_t u8limit_min, uint8_t u8limit_max);
|
||||
//RTC获取时间函数
|
||||
extern en_result_t Rtc_ReadDateTime(stc_rtc_time_t* time);
|
||||
//向RTC时间寄存器写入时间
|
||||
extern en_result_t Rtc_SetTime(stc_rtc_time_t* time);
|
||||
//RTC闹钟中断时间获取
|
||||
extern void Rtc_GetAlarmTime(stc_rtc_alarmtime_t* pstcAlarmTime);
|
||||
//RTC闹钟设置
|
||||
extern en_result_t Rtc_SetAlarmTime(stc_rtc_alarmtime_t* pstcAlarmTime);
|
||||
//初始化RTC
|
||||
extern void Rtc_Init(stc_rtc_initstruct_t* Rtc_InitStruct);
|
||||
#endif /* __RTC_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED , ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file spi.h
|
||||
**
|
||||
** Headerfile for SPI functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2017-05-17 1.0 Devi First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
#ifndef __SPI_H__
|
||||
#define __SPI_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
*****************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 功能通道选择设置
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 功能使能设置
|
||||
******************************************************************************/
|
||||
typedef enum en_spi_en
|
||||
{
|
||||
SpiMskEnable = 0x4u, ///< SPI模块使能
|
||||
SpiMskDisable = 0u, ///< SPI模块禁止
|
||||
}en_spi_en_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 模式配置
|
||||
******************************************************************************/
|
||||
typedef enum en_spi_mode
|
||||
{
|
||||
SpiMskMaster = 0x10u, ///<主机
|
||||
SpiMskSlave = 0x00u, ///<从机
|
||||
}en_spi_mode_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 时钟极性设置
|
||||
******************************************************************************/
|
||||
typedef enum en_spi_cpol
|
||||
{
|
||||
SpiMskcpollow = 0u, ///<极性为低
|
||||
SpiMskcpolhigh = 0x08u, ///<极性为高
|
||||
}en_spi_cpol_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 时钟相位设置
|
||||
******************************************************************************/
|
||||
typedef enum en_spi_cpha
|
||||
{
|
||||
SpiMskCphafirst = 0u, ///<第一边沿采样
|
||||
SpiMskCphasecond = 0x4u, ///<第二边沿采样
|
||||
}en_spi_cpha_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 时钟分频配置
|
||||
*****************************************************************************/
|
||||
typedef enum en_spi_clk_div
|
||||
{
|
||||
SpiClkMskDiv2 = 0x00u, ///<PCLK 2分频
|
||||
SpiClkMskDiv4 = 0x01u, ///<PCLK 4分频
|
||||
SpiClkMskDiv8 = 0x02u, ///<PCLK 8分频
|
||||
SpiClkMskDiv16 = 0x03u, ///<PCLK 16分频
|
||||
SpiClkMskDiv32 = 0x80u, ///<PCLK 32分频
|
||||
SpiClkMskDiv64 = 0x81u, ///<PCLK 64分频
|
||||
SpiClkMskDiv128 = 0x82u, ///<PCLK 128分频
|
||||
}en_spi_clk_div_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 片选脚电平选择
|
||||
*****************************************************************************/
|
||||
typedef enum en_spi_cspin
|
||||
{
|
||||
SpiCsLow = 0u, ///<片选低电平
|
||||
SpiCsHigh = 1u, ///<片选高电平
|
||||
}en_spi_cspin_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 状态
|
||||
*****************************************************************************/
|
||||
typedef enum en_spi_status
|
||||
{
|
||||
SpiIf = 0x80u, ///<传输结束中断标志
|
||||
SpiSserr = 0x20u, ///<从机模式错误标志
|
||||
SpiMdf = 0x10u, ///<主机模式错误标志
|
||||
SpiBusy = 0x08u, ///<SPI总线忙标志
|
||||
SpiTxe = 0x04u, ///<发送缓冲器器空标志
|
||||
SpiRxne = 0x02u, ///<接受缓冲器非空标志
|
||||
}en_spi_status_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 功能开启函数
|
||||
*****************************************************************************/
|
||||
typedef enum en_spi_func
|
||||
{
|
||||
SpiMskRxNeIe = 0x40u, ///<接收缓冲器非空中断使能
|
||||
SpiMskTxEIe = 0x20u, ///<发送缓冲器空中断使能
|
||||
SpiMskDmaTxEn = 0x10u, ///<DMA硬件访问发送使能
|
||||
SpiMskDmaRxEn = 0x08u, ///<DMA硬件访问接收使能
|
||||
}en_spi_func_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief SPI 总体配置结构体
|
||||
*****************************************************************************/
|
||||
typedef struct stc_spi_cfg
|
||||
{
|
||||
en_spi_mode_t enSpiMode; ///< 主从模式选择
|
||||
en_spi_clk_div_t enPclkDiv; ///< PCLK分频系数(波特率分频)
|
||||
en_spi_cpol_t enCPOL; ///< 时钟极性选择
|
||||
en_spi_cpha_t enCPHA; ///< 时钟相位选择
|
||||
}stc_spi_cfg_t;
|
||||
|
||||
//SPI 状态获取
|
||||
boolean_t Spi_GetStatus(M0P_SPI_TypeDef* SPIx,en_spi_status_t enStatus);
|
||||
|
||||
///<SPI 中断使能/禁止
|
||||
en_result_t Spi_IrqEnable(M0P_SPI_TypeDef* SPIx);
|
||||
en_result_t Spi_IrqDisable(M0P_SPI_TypeDef* SPIx);
|
||||
//SPI 清除中断标记
|
||||
en_result_t Spi_ClearStatus(M0P_SPI_TypeDef* SPIx);
|
||||
//SPI初始化函数
|
||||
en_result_t Spi_Init(M0P_SPI_TypeDef* SPIx,stc_spi_cfg_t* pstcSpiCfg);
|
||||
//SPI 功能使能禁止函数
|
||||
en_result_t Spi_FuncEnable(M0P_SPI_TypeDef* SPIx, en_spi_func_t enFunc);
|
||||
en_result_t Spi_FuncDisable(M0P_SPI_TypeDef* SPIx, en_spi_func_t enFunc);
|
||||
//SPI关闭函数
|
||||
en_result_t Spi_DeInit(M0P_SPI_TypeDef* SPIx);
|
||||
|
||||
//SPI 配置主发送的电平
|
||||
void Spi_SetCS(M0P_SPI_TypeDef* SPIx,boolean_t bFlag);
|
||||
|
||||
//SPI 数据字节数据收发
|
||||
uint8_t Spi_RWByte(M0P_SPI_TypeDef* SPIx, uint8_t u8Data);
|
||||
//SPI 数据发送
|
||||
en_result_t Spi_SendData(M0P_SPI_TypeDef* SPIx, uint8_t u8Data);
|
||||
void Spi_Slave_DummyWriteData(M0P_SPI_TypeDef* SPIx, uint8_t u8Data);
|
||||
en_result_t Spi_SendBuf(M0P_SPI_TypeDef* SPIx, uint8_t* pu8Buf, uint32_t u32Len);
|
||||
//SPI 数据接收
|
||||
uint8_t Spi_ReceiveData(M0P_SPI_TypeDef* SPIx);
|
||||
en_result_t Spi_ReceiveBuf(M0P_SPI_TypeDef* SPIx, uint8_t* pu8Buf, uint32_t u32Len);
|
||||
//@} // Spi Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __SPI_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
@@ -0,0 +1,456 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file sysctrl.h
|
||||
**
|
||||
** Headerfile for SYSCTRL functions
|
||||
** @link SYSCTRL Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-15 Lux First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SYSCTRL_H__
|
||||
#define __SYSCTRL_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup SysCtrlGroup (SYSCTRL)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 系统时钟输入源类型定义
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_clk_source
|
||||
{
|
||||
SysctrlClkRCH = 0u, ///< 内部高速时钟
|
||||
SysctrlClkXTH = 1u, ///< 外部高速时钟
|
||||
SysctrlClkRCL = 2u, ///< 内部低速时钟
|
||||
SysctrlClkXTL = 3u, ///< 外部低速时钟
|
||||
SysctrlClkPLL = 4u, ///< PLL时钟
|
||||
}en_sysctrl_clk_source_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief RCH频率值枚举类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_rch_freq
|
||||
{
|
||||
SysctrlRchFreq4MHz = 4u, ///< 4MHz
|
||||
SysctrlRchFreq8MHz = 3u, ///< 8MHz
|
||||
SysctrlRchFreq16MHz = 2u, ///< 16MHz
|
||||
SysctrlRchFreq22_12MHz = 1u, ///< 22.12MHz
|
||||
SysctrlRchFreq24MHz = 0u, ///< 24MHz
|
||||
}en_sysctrl_rch_freq_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief XTAL驱动能力类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_xtal_driver
|
||||
{
|
||||
SysctrlXtalDriver0 = 0u, ///< 最弱驱动能力
|
||||
SysctrlXtalDriver1 = 1u, ///< 弱驱动能力
|
||||
SysctrlXtalDriver2 = 2u, ///< 一般驱动能力
|
||||
SysctrlXtalDriver3 = 3u, ///< 最强驱动能力
|
||||
}en_sysctrl_xtal_driver_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief XTH频率值范围选择类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_xth_freq
|
||||
{
|
||||
SysctrlXthFreq4_8MHz = 0u, ///< 4~8MHz
|
||||
SysctrlXthFreq8_16MHz = 1u, ///< 8~16MHz
|
||||
SysctrlXthFreq16_24MHz = 2u, ///< 16~24MHz
|
||||
SysctrlXthFreq24_32MHz = 3u, ///< 24~32MHz
|
||||
}en_sysctrl_xth_freq_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief XTH时钟稳定周期数类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_xth_cycle
|
||||
{
|
||||
SysctrlXthStableCycle256 = 0u, ///< 256 个周期数
|
||||
SysctrlXthStableCycle1024 = 1u, ///< 1024 个周期数
|
||||
SysctrlXthStableCycle4096 = 2u, ///< 4096 个周期数
|
||||
SysctrlXthStableCycle16384 = 3u, ///< 16384 个周期数
|
||||
}en_sysctrl_xth_cycle_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief RCL频率值枚举类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_rcl_freq
|
||||
{
|
||||
SysctrlRclFreq32768 = 0x11u, ///< 32.768KHz
|
||||
SysctrlRclFreq38400 = 0x10u, ///< 38.4KHz
|
||||
}en_sysctrl_rcl_freq_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief RCL时钟稳定周期数类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_rcl_cycle
|
||||
{
|
||||
SysctrlRclStableCycle4 = 0u, ///< 4 个周期数
|
||||
SysctrlRclStableCycle16 = 1u, ///< 16 个周期数
|
||||
SysctrlRclStableCycle64 = 2u, ///< 64 个周期数
|
||||
SysctrlRclStableCycle256 = 3u, ///< 256 个周期数
|
||||
}en_sysctrl_rcl_cycle_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief XTL时钟稳定周期数类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_xtl_cycle
|
||||
{
|
||||
SysctrlXtlStableCycle256 = 0u, ///< 256 个周期数
|
||||
SysctrlXtlStableCycle1024 = 1u, ///< 1024 个周期数
|
||||
SysctrlXtlStableCycle4096 = 2u, ///< 4096 个周期数
|
||||
SysctrlXtlStableCycle16384 = 3u, ///< 16384 个周期数
|
||||
}en_sysctrl_xtl_cycle_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief XTL晶体振幅枚举类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_xtl_amp
|
||||
{
|
||||
SysctrlXtlAmp0 = 0u, ///< 最小振幅
|
||||
SysctrlXtlAmp1 = 1u, ///< 小振幅
|
||||
SysctrlXtlAmp2 = 2u, ///< 一般振幅
|
||||
SysctrlXtlAmp3 = 3u, ///< 最大振幅
|
||||
}en_sysctrl_xtl_amp_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PLL时钟稳定周期数类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pll_cycle
|
||||
{
|
||||
SysctrlPllStableCycle128 = 0u, ///< 128个周期数
|
||||
SysctrlPllStableCycle256 = 1u, ///< 256个周期数
|
||||
SysctrlPllStableCycle512 = 2u, ///< 512个周期数
|
||||
SysctrlPllStableCycle1024 = 3u, ///< 1024个周期数
|
||||
SysctrlPllStableCycle2048 = 4u, ///< 2048个周期数
|
||||
SysctrlPllStableCycle4096 = 5u, ///< 4096个周期数
|
||||
SysctrlPllStableCycle8192 = 6u, ///< 8192个周期数
|
||||
SysctrlPllStableCycle16384 = 7u, ///< 16384个周期数
|
||||
}en_sysctrl_pll_cycle_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PLL输入频率范围类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pll_infreq
|
||||
{
|
||||
SysctrlPllInFreq4_6MHz = 0u, ///< 4~16MHz
|
||||
SysctrlPllInFreq6_12MHz = 1u, ///< 6~12MHz
|
||||
SysctrlPllInFreq12_20MHz = 2u, ///< 12~20MHz
|
||||
SysctrlPllInFreq20_24MHz = 3u, ///< 20~24MHz
|
||||
}en_sysctrl_pll_infreq_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PLL输出频率范围类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pll_outfreq
|
||||
{
|
||||
SysctrlPllOutFreq8_12MHz = 0u, ///< 8~12MHz
|
||||
SysctrlPllOutFreq12_18MHz = 1u, ///< 12~18MHz
|
||||
SysctrlPllOutFreq18_24MHz = 2u, ///< 18~24MHz
|
||||
SysctrlPllOutFreq24_36MHz = 3u, ///< 24~36MHz
|
||||
SysctrlPllOutFreq36_48MHz = 4u, ///< 36~48MHz
|
||||
}en_sysctrl_pll_outfreq_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PLL输入时钟源类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pll_clksource
|
||||
{
|
||||
SysctrlPllXthXtal = 0u, ///< XTH晶振输入的时钟
|
||||
SysctrlPllXthIn = 2u, ///< XTH从端口输入的时钟
|
||||
SysctrlPllRch = 3u, ///< RCH时钟
|
||||
}en_sysctrl_pll_clksource_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PLL输入时钟源类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pll_mul
|
||||
{
|
||||
SysctrlPllMul2 = 2u, ///< 2倍频
|
||||
SysctrlPllMul3 = 3u, ///< 3倍频
|
||||
SysctrlPllMul4 = 4u, ///< 4倍频
|
||||
SysctrlPllMul5 = 5u, ///< 5倍频
|
||||
SysctrlPllMul6 = 6u, ///< 6倍频
|
||||
SysctrlPllMul7 = 7u, ///< 7倍频
|
||||
SysctrlPllMul8 = 8u, ///< 8倍频
|
||||
SysctrlPllMul9 = 9u, ///< 9倍频
|
||||
SysctrlPllMul10 = 10u, ///< 10倍频
|
||||
SysctrlPllMul11 = 11u, ///< 11倍频
|
||||
SysctrlPllMul12 = 12u, ///< 12倍频
|
||||
}en_sysctrl_pll_mul_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief HCLK时钟分频系数类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_hclk_div
|
||||
{
|
||||
SysctrlHclkDiv1 = 0u, ///< SystemClk
|
||||
SysctrlHclkDiv2 = 1u, ///< SystemClk/2
|
||||
SysctrlHclkDiv4 = 2u, ///< SystemClk/4
|
||||
SysctrlHclkDiv8 = 3u, ///< SystemClk/8
|
||||
SysctrlHclkDiv16 = 4u, ///< SystemClk/16
|
||||
SysctrlHclkDiv32 = 5u, ///< SystemClk/32
|
||||
SysctrlHclkDiv64 = 6u, ///< SystemClk/64
|
||||
SysctrlHclkDiv128 = 7u, ///< SystemClk/128
|
||||
}en_sysctrl_hclk_div_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief PCLK分频系数
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_pclk_div
|
||||
{
|
||||
SysctrlPclkDiv1 = 0u, ///< HCLK
|
||||
SysctrlPclkDiv2 = 1u, ///< HCLK/2
|
||||
SysctrlPclkDiv4 = 2u, ///< HCLK/4
|
||||
SysctrlPclkDiv8 = 3u, ///< HCLK/8
|
||||
}en_sysctrl_pclk_div_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief RTC高速时钟补偿时钟频率数据类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_rtc_adjust
|
||||
{
|
||||
SysctrlRTC4MHz = 0u, ///< 4MHz
|
||||
SysctrlRTC6MHz = 1u, ///< 6MHz
|
||||
SysctrlRTC8MHz = 2u, ///< 8MHz
|
||||
SysctrlRTC12MHz = 3u, ///< 12MHz
|
||||
SysctrlRTC16MHz = 4u, ///< 16MHz
|
||||
SysctrlRTC20MHz = 5u, ///< 20MHz
|
||||
SysctrlRTC24MHz = 6u, ///< 24MHz
|
||||
SysctrlRTC32MHz = 7u, ///< 32MHz
|
||||
}en_sysctrl_rtc_adjust_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 系统控制模块其他功能数据类型定义
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_func
|
||||
{
|
||||
SysctrlEXTHEn = 1u, ///< 使能外部高速时钟从输入引脚输入
|
||||
SysctrlEXTLEn = 2u, ///< 使能外部低速速时钟从输入引脚输入
|
||||
SysctrlXTLAlwaysOnEn = 3u, ///< 使能后XTL_EN只可置位
|
||||
SysctrlClkFuncRTCLpmEn = 5u, ///< 使能RTC低功耗模式
|
||||
SysctrlCMLockUpEn = 6u, ///< 使能后CPU执行无效指令会复位MCU
|
||||
SysctrlSWDUseIOEn = 8u, ///< SWD端口设为IO功能
|
||||
}en_sysctrl_func_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 外设时钟门控开关类型枚举
|
||||
******************************************************************************/
|
||||
typedef enum en_sysctrl_peripheral_gate
|
||||
{
|
||||
SysctrlPeripheralUart0 = 0u, ///< 串口0
|
||||
SysctrlPeripheralUart1 = 1u, ///< 串口1
|
||||
SysctrlPeripheralLpUart0 = 2u, ///< 低功耗串口0
|
||||
SysctrlPeripheralLpUart1 = 3u, ///< 低功耗串口1
|
||||
SysctrlPeripheralI2c0 = 4u, ///< I2C0
|
||||
SysctrlPeripheralI2c1 = 5u, ///< I2C1
|
||||
SysctrlPeripheralSpi0 = 6u, ///< SPI0
|
||||
SysctrlPeripheralSpi1 = 7u, ///< SPI1
|
||||
SysctrlPeripheralBaseTim = 8u, ///< 基础定时器TIM0/1/2
|
||||
SysctrlPeripheralLpTim0 = 9u, ///< 低功耗定时器0
|
||||
SysctrlPeripheralAdvTim = 10u, ///< 高级定时器TIM4/5/6
|
||||
SysctrlPeripheralTim3 = 11u, ///< 定时器3
|
||||
SysctrlPeripheralOpa = 13u, ///< OPA
|
||||
SysctrlPeripheralPca = 14u, ///< 可编程计数阵列
|
||||
SysctrlPeripheralWdt = 15u, ///< 看门狗
|
||||
SysctrlPeripheralAdcBgr = 16u, ///< ADC&BGR
|
||||
SysctrlPeripheralVcLvd = 17u, ///< VC和LVD
|
||||
SysctrlPeripheralRng = 18u, ///< RNG
|
||||
SysctrlPeripheralPcnt = 19u, ///< PCNT
|
||||
SysctrlPeripheralRtc = 20u, ///< RTC
|
||||
SysctrlPeripheralTrim = 21u, ///< 时钟校准
|
||||
SysctrlPeripheralLcd = 22u, ///< LCD
|
||||
SysctrlPeripheralTick = 24u, ///< 系统定时器
|
||||
SysctrlPeripheralSwd = 25u, ///< SWD
|
||||
SysctrlPeripheralCrc = 26u, ///< CRC
|
||||
SysctrlPeripheralAes = 27u, ///< AES
|
||||
SysctrlPeripheralGpio = 28u, ///< GPIO
|
||||
SysctrlPeripheralDma = 29u, ///< DMA
|
||||
SysctrlPeripheralFlash = 31u, ///< Flash
|
||||
SysctrlPeripheralDac = 35u, ///< DAC
|
||||
SysctrlPeripheralLpTim1 = 36u, ///< 低功耗定时器1
|
||||
SysctrlPeripheralUart2 = 40u, ///< UART2
|
||||
SysctrlPeripheralUart3 = 41u, ///< UART3
|
||||
}en_sysctrl_peripheral_gate_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 时钟初始化配置结构体定义
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_sysctrl_clk_source_t enClkSrc; ///< 时钟源选择
|
||||
en_sysctrl_hclk_div_t enHClkDiv; ///< HCLK分频系数
|
||||
en_sysctrl_pclk_div_t enPClkDiv; ///< PCLK分频系数
|
||||
}stc_sysctrl_clk_cfg_t;
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** \brief 时钟初始化配置结构体定义
|
||||
******************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
en_sysctrl_pll_infreq_t enInFreq; ///< PLL输入时钟频率范围选择
|
||||
en_sysctrl_pll_outfreq_t enOutFreq; ///< PLL输出时钟频率范围选择
|
||||
en_sysctrl_pll_clksource_t enPllClkSrc; ///< PLL输入时钟源选择
|
||||
en_sysctrl_pll_mul_t enPllMul; ///< PLL倍频系数选择
|
||||
}stc_sysctrl_pll_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///< 系统时钟初始化API:用于上电后,系统工作之前对主频及外设时钟进行初始化;
|
||||
///< 注意1:使用该初始化函数前需要根据系统,必须优先设置目标内部时钟源的TRIM值或外部时钟源的频率范围,
|
||||
///< 注意2:XTH、XTL的频率范围设定,需要根据外部晶振决定,
|
||||
///< 注意3:本驱动默认宏定义:SYSTEM_XTH=32MHz,SYSTEM_XTL=32768Hz,如使用其它外部晶振,必须修改这两个宏定义的值。
|
||||
en_result_t Sysctrl_ClkInit(stc_sysctrl_clk_cfg_t *pstcCfg);
|
||||
|
||||
///< 系统时钟去初始化API:恢复为上电默认状态->PCLK=HCLK=SystemClk=RCH4MHz
|
||||
en_result_t Sysctrl_ClkDeInit(void);
|
||||
|
||||
///< 系统时钟模块的基本功能设置
|
||||
///< 注意:使能需要使用的时钟源之前,必须优先设置目标内部时钟源的TRIM值或外部时钟源的频率范围
|
||||
en_result_t Sysctrl_ClkSourceEnable(en_sysctrl_clk_source_t enSource, boolean_t bFlag);
|
||||
|
||||
///<外部晶振驱动配置:系统初始化Sysctrl_ClkInit()之后,可根据需要配置外部晶振的驱动能力,时钟初始化Sysctrl_ClkInit()默认为最大值;
|
||||
en_result_t Sysctrl_XTHDriverCfg(en_sysctrl_xtal_driver_t enDriver);
|
||||
en_result_t Sysctrl_XTLDriverCfg(en_sysctrl_xtl_amp_t enAmp, en_sysctrl_xtal_driver_t enDriver);
|
||||
|
||||
///<时钟稳定周期设置:系统初始化Sysctrl_ClkInit()之后,可根据需要配置时钟开启后的稳定之间,默认为最大值;
|
||||
en_result_t Sysctrl_SetXTHStableTime(en_sysctrl_xth_cycle_t enCycle);
|
||||
en_result_t Sysctrl_SetRCLStableTime(en_sysctrl_rcl_cycle_t enCycle);
|
||||
en_result_t Sysctrl_SetXTLStableTime(en_sysctrl_xtl_cycle_t enCycle);
|
||||
en_result_t Sysctrl_SetPLLStableTime(en_sysctrl_pll_cycle_t enCycle);
|
||||
|
||||
///<系统时钟源切换并更新系统时钟:如果需要在系统时钟初始化Sysctrl_ClkInit()之后切换主频时钟源,则使用该函数;
|
||||
///< 时钟切换前后,必须根据目标频率值设置Flash读等待周期,可配置插入周期为0、1、2,
|
||||
///< 注意!!!:当HCLK大于24MHz时,FLASH等待周期插入必须至少为1,否则程序运行可能产生未知错误
|
||||
en_result_t Sysctrl_SysClkSwitch(en_sysctrl_clk_source_t enSource);
|
||||
|
||||
///< 时钟源频率设定:根据系统情况,单独设置不同时钟源的频率值;
|
||||
///< 时钟频率设置前,必须根据目标频率值设置Flash读等待周期,可配置插入周期为0、1、2,
|
||||
///< 其中XTL的时钟由外部晶振决定,无需设置。
|
||||
en_result_t Sysctrl_SetRCHTrim(en_sysctrl_rch_freq_t enRCHFreq);
|
||||
en_result_t Sysctrl_SetRCLTrim(en_sysctrl_rcl_freq_t enRCLFreq);
|
||||
en_result_t Sysctrl_SetXTHFreq(en_sysctrl_xth_freq_t enXTHFreq);
|
||||
en_result_t Sysctrl_SetPLLFreq(stc_sysctrl_pll_cfg_t *pstcPLLCfg);
|
||||
|
||||
///< 时钟分频设置:根据系统情况,单独设置HCLK、PCLK的分配值;
|
||||
en_result_t Sysctrl_SetHCLKDiv(en_sysctrl_hclk_div_t enHCLKDiv);
|
||||
en_result_t Sysctrl_SetPCLKDiv(en_sysctrl_pclk_div_t enPCLKDiv);
|
||||
|
||||
///< 时钟频率获取:根据系统需要,获取当前HCLK及PCLK的频率值
|
||||
uint32_t Sysctrl_GetHClkFreq(void);
|
||||
uint32_t Sysctrl_GetPClkFreq(void);
|
||||
|
||||
///< 外设门控开关/状态获取:用于控制外设模块的使能,使用该模块的功能之前,必须使能该模块的门控时钟;
|
||||
en_result_t Sysctrl_SetPeripheralGate(en_sysctrl_peripheral_gate_t enPeripheral, boolean_t bFlag);
|
||||
boolean_t Sysctrl_GetPeripheralGate(en_sysctrl_peripheral_gate_t enPeripheral);
|
||||
|
||||
///< 系统功能配置:用于设置其他系统相关特殊功能;
|
||||
en_result_t Sysctrl_SetFunc(en_sysctrl_func_t enFunc, boolean_t bFlag);
|
||||
|
||||
///< RTC高速时钟补偿:用于设置RTC高速时钟下的频率补偿
|
||||
en_result_t Sysctrl_SetRTCAdjustClkFreq(en_sysctrl_rtc_adjust_t enRtcAdj);
|
||||
|
||||
//@} // Sysctrl Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __SYSCTRL_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,781 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file timer3.h
|
||||
**
|
||||
** 基本定时器数据结构及API声明
|
||||
** @link Timer3 Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2019-04-18 Husj First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __TIMER3_H__
|
||||
#define __TIMER3_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup Tim3Group Timer3 (TIM3)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief Timer3 通道定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_channel
|
||||
{
|
||||
Tim3CH0 = 0u, ///< Timer3通道0
|
||||
Tim3CH1 = 1u, ///< Timer3通道1
|
||||
Tim3CH2 = 2u, ///< Timer3通道2
|
||||
}en_tim3_channel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 工作模式选择数据类型重定义 (MODE)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_work_mode
|
||||
{
|
||||
Tim3WorkMode0 = 0u, ///< 定时器模式
|
||||
Tim3WorkMode1 = 1u, ///< PWC模式
|
||||
Tim3WorkMode2 = 2u, ///< 锯齿波模式
|
||||
Tim3WorkMode3 = 3u, ///< 三角波模式
|
||||
}en_tim3_work_mode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 极性控制数据类型重定义 (GATE_P)(模式0)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m0cr_gatep
|
||||
{
|
||||
Tim3GatePositive = 0u, ///< 高电平有效
|
||||
Tim3GateOpposite = 1u, ///< 低电平有效
|
||||
}en_tim3_m0cr_gatep_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3 预除频选择 (PRS)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_cr_timclkdiv
|
||||
{
|
||||
Tim3PCLKDiv1 = 0u, ///< Div 1
|
||||
Tim3PCLKDiv2 = 1u, ///< Div 2
|
||||
Tim3PCLKDiv4 = 2u, ///< Div 4
|
||||
Tim3PCLKDiv8 = 3u, ///< Div 8
|
||||
Tim3PCLKDiv16 = 4u, ///< Div 16
|
||||
Tim3PCLKDiv32 = 5u, ///< Div 32
|
||||
Tim3PCLKDiv64 = 6u, ///< Div 64
|
||||
Tim3PCLKDiv256 = 7u, ///< Div 256
|
||||
}en_tim3_cr_timclkdiv_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数/定时器功能选择数据类型重定义 (CT)(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_cr_ct
|
||||
{
|
||||
Tim3Timer = 0u, ///< 定时器功能,计数时钟为内部PCLK
|
||||
Tim3Counter = 1u, ///< 计数器功能,计数时钟为外部ETR
|
||||
}en_tim3_cr_ct_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 定时器工作模式数据类型重定义 (MD)(模式0)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m0cr_md
|
||||
{
|
||||
Tim332bitFreeMode = 0u, ///< 32位计数器/定时器
|
||||
Tim316bitArrMode = 1u, ///< 自动重装载16位计数器/定时器
|
||||
}en_tim3_m0cr_md_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3中断类型数据类型重定义(模式0/1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_irq_type
|
||||
{
|
||||
Tim3UevIrq = 0u, ///< 溢出/事件更新中断
|
||||
Tim3CA0Irq = 2u, ///< CH0A捕获/比较中断(仅模式1/23存在)
|
||||
Tim3CA1Irq = 3u, ///< CH1A捕获/比较中断(仅模式23存在)
|
||||
Tim3CA2Irq = 4u, ///< CH2A捕获/比较中断(仅模式23存在)
|
||||
Tim3CB0Irq = 5u, ///< CH0B捕获/比较中断(仅模式23存在)
|
||||
Tim3CB1Irq = 6u, ///< CH1B捕获/比较中断(仅模式23存在)
|
||||
Tim3CB2Irq = 7u, ///< CH2B捕获/比较中断(仅模式23存在)
|
||||
Tim3CA0E = 8u, ///< CH0A捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3CA1E = 9u, ///< CH1A捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3CA2E = 10u, ///< CH2A捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3CB0E = 11u, ///< CH0B捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3CB1E = 12u, ///< CH1B捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3CB2E = 13u, ///< CH2B捕获数据丢失标志(仅模式23存在)(不是中断)
|
||||
Tim3BkIrq = 14u, ///< 刹车中断(仅模式23存在)
|
||||
Tim3TrigIrq = 15u, ///< 触发中断(仅模式23存在)
|
||||
}en_tim3_irq_type_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 测量开始结束数据类型重定义 (Edg1stEdg2nd)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m1cr_Edge
|
||||
{
|
||||
Tim3PwcRiseToRise = 0u, ///< 上升沿到上升沿(周期)
|
||||
Tim3PwcFallToRise = 1u, ///< 下降沿到上升沿(低电平)
|
||||
Tim3PwcRiseToFall = 2u, ///< 上升沿到下降沿(高电平)
|
||||
Tim3PwcFallToFall = 3u, ///< 下降沿到下降沿(周期)
|
||||
}en_tim3_m1cr_Edge_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC测量测试模式选择数据类型重定义 (Oneshot)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m1cr_oneshot
|
||||
{
|
||||
Tim3PwcCycleDetect = 0u, ///< PWC循环测量
|
||||
Tim3PwcOneShotDetect = 1u, ///< PWC单次测量
|
||||
}en_tim3_m1cr_oneshot_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC IA0选择数据类型重定义 (IA0S)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m1_mscr_ia0s
|
||||
{
|
||||
Tim3IA0Input = 0u, ///< IAO输入
|
||||
Tim3XORInput = 1u, ///< IA0 ETR GATE XOR(TIM0/1/2)/IA0 IA1 IA2 XOR(TIM3)
|
||||
}en_tim3_m1_mscr_ia0s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC IB0选择数据类型重定义 (IA0S)(模式1)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m1_mscr_ib0s
|
||||
{
|
||||
Tim3IB0Input = 0u, ///< IBO输入
|
||||
Tim3TsInput = 1u, ///< 内部触发TS选择信号
|
||||
}en_tim3_m1_mscr_ib0s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 输出极性、输入相位 数据类型重定义 (CCPA0/CCPB0/ETP/BKP)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_port_polarity
|
||||
{
|
||||
Tim3PortPositive = 0u, ///< 正常输入输出
|
||||
Tim3PortOpposite = 1u, ///< 反向输入输出
|
||||
}en_tim3_port_polarity_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 滤波选择数据类型重定义 (FLTET/FLTA0/FLAB0)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_flt
|
||||
{
|
||||
Tim3FltNone = 0u, ///< 无滤波
|
||||
Tim3FltPCLKCnt3 = 4u, ///< PCLK 3个连续有效
|
||||
Tim3FltPCLKDiv4Cnt3 = 5u, ///< PCLK/4 3个连续有效
|
||||
Tim3FltPCLKDiv16Cnt3 = 6u, ///< PCLK/16 3个连续有效
|
||||
Tim3FltPCLKDiv64Cnt3 = 7u, ///< PCLK/64 3个连续有效
|
||||
}en_tim3_flt_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 通道比较控制 数据类型重定义 (OCMA/OCMB)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_fltr_ocm
|
||||
{
|
||||
Tim3ForceLow = 0u, ///< 强制为0
|
||||
Tim3ForceHigh = 1u, ///< 强制为1
|
||||
Tim3CMPForceLow = 2u, ///< 比较匹配时强制为0
|
||||
Tim3CMPForceHigh = 3u, ///< 比较匹配时强制为1
|
||||
Tim3CMPInverse = 4u, ///< 比较匹配时翻转电平
|
||||
Tim3CMPOnePrdHigh = 5u, ///< 比较匹配时输出一个计数周期的高电平
|
||||
Tim3PWMMode1 = 6u, ///< 通道控制为PWM mode 1
|
||||
Tim3PWMMode2 = 7u, ///< 通道控制为PWM mode 2
|
||||
}en_tim3_m23_fltr_ocm_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式TS数据类型重定义 (TS)(模式1/23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_mscr_ts
|
||||
{
|
||||
Tim3Ts0ETR = 0u, ///< ETR外部输入滤波后的相位选择信号
|
||||
Tim3Ts1TIM0TRGO = 1u, ///< Timer0的TRGO输出信号
|
||||
Tim3Ts2TIM1TRGO = 2u, ///< Timer1的TRGO输出信号
|
||||
Tim3Ts3TIM2TRGO = 3u, ///< Timer2的TRGO输出信号
|
||||
Tim3Ts4TIM3TRGO = 4u, ///< Timer3的TRGO输出信号
|
||||
//Tim3Ts5IA0ED = 5u, ///< 无效
|
||||
Tim3Ts6IAFP = 6u, ///< CH0A 外部输输入滤波后的相位选择信号
|
||||
Tim3Ts7IBFP = 7u, ///< CH0B 外部输输入滤波后的相位选择信
|
||||
}en_tim3_mscr_ts_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWM输出模式选择数据类型重定义 (COMP)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23cr_comp
|
||||
{
|
||||
Tim3IndependentPWM = 0u, ///< 独立PWM输出
|
||||
Tim3ComplementaryPWM = 1u, ///< 互补PWM输出
|
||||
}en_tim3_m23cr_comp_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数方向选择数据类型重定义 (DIR)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23cr_dir
|
||||
{
|
||||
Tim3CntUp = 0u, ///< 向上计数
|
||||
Tim3CntDown = 1u, ///< 向下计数
|
||||
}en_tim3_m23cr_dir_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 计数方向选择数据类型重定义 (PWM2S)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23cr_pwm2s
|
||||
{
|
||||
Tim3DoublePointCmp = 0u, ///< 双点比较使能,使用CCRA,CCRB比较控制OCREFA输出
|
||||
Tim3SinglePointCmp = 1u, ///< 单点比较使能,使用CCRA比较控制OCREFA输出
|
||||
}en_tim3_m23cr_pwm2s_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief GATE在PWM互补模式下捕获或比较功能 选择数据类型重定义 (CSG)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23cr_csg
|
||||
{
|
||||
Tim3PWMCompGateCmpOut = 0u, ///< 在PWM互补模式下,Gate作为比较输出
|
||||
Tim3PWMCompGateCapIn = 1u, ///< 在PWM互补模式下,Gate作为捕获输入
|
||||
}en_tim3_m23cr_csg_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较捕获寄存器 数据类型重定义 (CCR0A,CCR0B)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_ccrx
|
||||
{
|
||||
Tim3CCR0A = 0u, ///< CCR0A比较捕获寄存器
|
||||
Tim3CCR0B = 1u, ///< CCR0B比较捕获寄存器
|
||||
Tim3CCR1A = 2u, ///< CCR1A比较捕获寄存器
|
||||
Tim3CCR1B = 3u, ///< CCR1B比较捕获寄存器
|
||||
Tim3CCR2A = 4u, ///< CCR2A比较捕获寄存器
|
||||
Tim3CCR2B = 5u, ///< CCR2B比较捕获寄存器
|
||||
}en_tim3_m23_ccrx_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief OCREF清除源 选择数据类型重定义 (OCCS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23ce_occs
|
||||
{
|
||||
Tim3OC_Ref_Clr = 0u, ///< 来自VC的OC_Ref_Clr
|
||||
Tim3ETRf = 1u, ///< 外部ETRf
|
||||
}en_tim3_m23ce_occs_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较匹配中断模式 选择数据类型重定义 (CIS/CISB)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_cisa_cisb
|
||||
{
|
||||
Tim3CmpIntNone = 0u, ///< 无比较匹配中断
|
||||
Tim3CmpIntRise = 1u, ///< 比较匹配上升沿中断
|
||||
Tim3CmpIntFall = 2u, ///< 比较匹配下降沿中断
|
||||
Tim3CmpIntRiseFall = 3u, ///< 比较匹配上升沿下降沿中断
|
||||
}en_tim3_m23_cisa_cisb_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3端口控制 - 刹车时CHx输出状态控制(BKSA/BKSB)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_tim3_m23_crchx_bks
|
||||
{
|
||||
Tim3CHxBksHiZ = 0u, ///< 刹车使能时,CHx端口输出高阻态
|
||||
Tim3CHxBksNorm = 1u, ///< 刹车使能时,CHx端口正常输出
|
||||
Tim3CHxBksLow = 2u, ///< 刹车使能时,CHx端口输出低电平
|
||||
Tim3CHxBksHigh = 3u, ///< 刹车使能时,CHx端口输出高电平
|
||||
}en_tim3_m23_crchx_bks_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3端口控制 - CHx上升沿下降沿捕获(CRx/CFx)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_tim3_m23_crch0_cfx_crx
|
||||
{
|
||||
Tim3CHxCapNone = 0u, ///< CHx通道捕获禁止
|
||||
Tim3CHxCapRise = 1u, ///< CHx通道上升沿捕获使能
|
||||
Tim3CHxCapFall = 2u, ///< CHx通道下降沿捕获使能
|
||||
Tim3CHxCapFallRise = 3u, ///< CHx通道上升沿下降沿捕获都使能
|
||||
}en_tim3_m23_crch0_cfx_crx_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3端口控制 - CHx比较捕获模式(CSA/CSB)(模式23)
|
||||
**
|
||||
** \note
|
||||
******************************************************************************/
|
||||
typedef enum en_tim3_m23_crch0_csa_csb
|
||||
{
|
||||
Tim3CHxCmpMode = 0u, ///< CHx通道设置为比较模式
|
||||
Tim3CHxCapMode = 1u, ///< CHx通道设置为捕获模式
|
||||
}en_tim3_m23_crch0_csa_csb_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 比较模式下 DMA比较触发选择 数据类型重定义 (CCDS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_mscr_ccds
|
||||
{
|
||||
Tim3CmpTrigDMA = 0u, ///< 比较匹配触发DMA
|
||||
Tim3UEVTrigDMA = 1u, ///< 事件更新代替比较匹配触发DMA
|
||||
}en_tim3_m23_mscr_ccds_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式选择 数据类型重定义 (MSM)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_mscr_msm
|
||||
{
|
||||
Tim3SlaveMode = 0u, ///< 从模式
|
||||
Tim3MasterMode = 1u, ///< 主模式
|
||||
}en_tim3_m23_mscr_msm_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发主模式输出源 数据类型重定义 (MMS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_mscr_mms
|
||||
{
|
||||
Tim3MasterUG = 0u, ///< UG(软件更新)源
|
||||
Tim3MasterCTEN = 1u, ///< CTEN源
|
||||
Tim3MasterUEV = 2u, ///< UEV更新源
|
||||
Tim3MasterCMPSO = 3u, ///< 比较匹配选择输出源
|
||||
Tim3MasterOCA0Ref = 4u, ///< OCA0_Ref源
|
||||
Tim3MasterOCB0Ref = 5u, ///< OCB0_Ref源
|
||||
//Tim3MasterOCB0Ref = 6u,
|
||||
//Tim3MasterOCB0Ref = 7u,
|
||||
}en_tim3_m23_mscr_mms_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发从模式选择 数据类型重定义 (SMS)(模式23)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_m23_mscr_sms
|
||||
{
|
||||
Tim3SlaveIClk = 0u, ///< 使用内部时钟
|
||||
Tim3SlaveResetTIM = 1u, ///< 复位功能
|
||||
Tim3SlaveTrigMode = 2u, ///< 触发模式
|
||||
Tim3SlaveEClk = 3u, ///< 外部时钟模式
|
||||
Tim3SlaveCodeCnt1 = 4u, ///< 正交编码计数模式1
|
||||
Tim3SlaveCodeCnt2 = 5u, ///< 正交编码计数模式2
|
||||
Tim3SlaveCodeCnt3 = 6u, ///< 正交编码计数模式3
|
||||
Tim3SlaveGateCtrl = 7u, ///< 门控功能
|
||||
}en_tim3_m23_mscr_sms_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 定时器运行控制数据类型重定义 (CTEN)
|
||||
*****************************************************************************/
|
||||
typedef enum en_tim3_start
|
||||
{
|
||||
Tim3CTENDisable = 0u, ///< 停止
|
||||
Tim3CTENEnable = 1u, ///< 运行
|
||||
}en_tim3_start_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3 mode0 配置结构体定义(模式0)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_mode0_cfg
|
||||
{
|
||||
en_tim3_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_tim3_m0cr_gatep_t enGateP; ///< 门控极性控制
|
||||
boolean_t bEnGate; ///< 门控使能
|
||||
en_tim3_cr_timclkdiv_t enPRS; ///< 预除频配置
|
||||
boolean_t bEnTog; ///< 翻转输出使能
|
||||
en_tim3_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_tim3_m0cr_md_t enCntMode; ///< 计数模式配置
|
||||
}stc_tim3_mode0_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3 mode1 配置结构体定义(模式1)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_mode1_cfg
|
||||
{
|
||||
en_tim3_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_tim3_cr_timclkdiv_t enPRS; ///< 预除频配置
|
||||
en_tim3_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_tim3_m1cr_oneshot_t enOneShot; ///< 单次测量/循环测量选择
|
||||
}stc_tim3_mode1_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief PWC输入配置结构体定义(模式1)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_pwc_input_cfg
|
||||
{
|
||||
en_tim3_mscr_ts_t enTsSel; ///< 触发输入源选择
|
||||
en_tim3_m1_mscr_ia0s_t enIA0Sel; ///< CHA0输入选择
|
||||
en_tim3_m1_mscr_ib0s_t enIB0Sel; ///< CHB0输入选择
|
||||
en_tim3_port_polarity_t enETRPhase; ///< ETR相位选择
|
||||
en_tim3_flt_t enFltETR; ///< ETR滤波设置
|
||||
en_tim3_flt_t enFltIA0; ///< CHA0滤波设置
|
||||
en_tim3_flt_t enFltIB0; ///< CHB0滤波设置
|
||||
}stc_tim3_pwc_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TIM3 mode23 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_mode23_cfg
|
||||
{
|
||||
en_tim3_work_mode_t enWorkMode; ///< 工作模式设置
|
||||
en_tim3_m23cr_dir_t enCntDir; ///< 计数方向
|
||||
en_tim3_cr_timclkdiv_t enPRS; ///< 时钟预除频配置
|
||||
en_tim3_cr_ct_t enCT; ///< 定时/计数功能选择
|
||||
en_tim3_m23cr_comp_t enPWMTypeSel; ///< PWM模式选择(独立/互补)
|
||||
en_tim3_m23cr_pwm2s_t enPWM2sSel; ///< OCREFA双点比较功能选择
|
||||
boolean_t bOneShot; ///< 单次触发模式使能/禁止
|
||||
boolean_t bURSSel; ///< 更新源选择
|
||||
}stc_tim3_mode23_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief GATE在PWM互补模式下捕获或比较功能 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_gate_cfg
|
||||
{
|
||||
en_tim3_m23cr_csg_t enGateFuncSel; ///< Gate比较、捕获功能选择
|
||||
boolean_t bGateRiseCap; ///< GATE作为捕获功能时,上沿捕获有效控制
|
||||
boolean_t bGateFallCap; ///< GATE作为捕获功能时,下沿捕获有效控制
|
||||
}stc_tim3_m23_gate_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief CHA/CHB通道比较控制 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_compare_cfg
|
||||
{
|
||||
en_tim3_m23_crch0_csa_csb_t enCHxACmpCap; ///< CH0A比较/捕获功能选择
|
||||
en_tim3_m23_fltr_ocm_t enCHxACmpCtrl; ///< CH0A通道比较控制
|
||||
en_tim3_port_polarity_t enCHxAPolarity; ///< CH0A输出极性控制
|
||||
boolean_t bCHxACmpBufEn; ///< 比较A缓存功能 使能/禁止
|
||||
en_tim3_m23_cisa_cisb_t enCHxACmpIntSel; ///< CHA比较匹配中断选择
|
||||
|
||||
en_tim3_m23_crch0_csa_csb_t enCHxBCmpCap; ///< CH0B比较/捕获功能选择
|
||||
en_tim3_m23_fltr_ocm_t enCHxBCmpCtrl; ///< CH0B通道比较控制
|
||||
en_tim3_port_polarity_t enCHxBPolarity; ///< CH0B输出极性控制
|
||||
boolean_t bCHxBCmpBufEn; ///< 比较B缓存功能 使能/禁止
|
||||
en_tim3_m23_cisa_cisb_t enCHxBCmpIntSel; ///< CHB0比较匹配中断选择
|
||||
}stc_tim3_m23_compare_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief CHA/CHB通道捕获控制 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_input_cfg
|
||||
{
|
||||
en_tim3_m23_crch0_csa_csb_t enCHxACmpCap; ///< CH0A比较/捕获功能选择
|
||||
en_tim3_m23_crch0_cfx_crx_t enCHxACapSel; ///< CH0A捕获边沿选择
|
||||
en_tim3_flt_t enCHxAInFlt; ///< CH0A通道捕获滤波控制
|
||||
en_tim3_port_polarity_t enCHxAPolarity; ///< CH0A输入相位
|
||||
|
||||
en_tim3_m23_crch0_csa_csb_t enCHxBCmpCap; ///< CH0A比较/捕获功能选择
|
||||
en_tim3_m23_crch0_cfx_crx_t enCHxBCapSel; ///< CH0B捕获边沿选择
|
||||
en_tim3_flt_t enCHxBInFlt; ///< CH0B通道捕获滤波控制
|
||||
en_tim3_port_polarity_t enCHxBPolarity; ///< CH0B输入相位
|
||||
|
||||
}stc_tim3_m23_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief ETR输入相位滤波配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_etr_input_cfg
|
||||
{
|
||||
en_tim3_port_polarity_t enETRPolarity; ///< ETR输入极性设置
|
||||
en_tim3_flt_t enETRFlt; ///< ETR滤波设置
|
||||
}stc_tim3_m23_etr_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 刹车BK输入相位滤波配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_bk_input_cfg
|
||||
{
|
||||
boolean_t bEnBrake; ///< 刹车使能
|
||||
boolean_t bEnVCBrake; ///< 使能VC刹车
|
||||
boolean_t bEnSafetyBk; ///< 使能safety刹车
|
||||
boolean_t bEnBKSync; ///< TIM0/TIM1/TIM2刹车同步使能
|
||||
en_tim3_m23_crchx_bks_t enBkCH0AStat; ///< 刹车时CHA端口状态设置
|
||||
en_tim3_m23_crchx_bks_t enBkCH0BStat; ///< 刹车时CHB端口状态设置
|
||||
en_tim3_m23_crchx_bks_t enBkCH1AStat; ///< 刹车时CHA端口状态设置
|
||||
en_tim3_m23_crchx_bks_t enBkCH1BStat; ///< 刹车时CHB端口状态设置
|
||||
en_tim3_m23_crchx_bks_t enBkCH2AStat; ///< 刹车时CHA端口状态设置
|
||||
en_tim3_m23_crchx_bks_t enBkCH2BStat; ///< 刹车时CHB端口状态设置
|
||||
en_tim3_port_polarity_t enBrakePolarity; ///< 刹车BK输入极性设置
|
||||
en_tim3_flt_t enBrakeFlt; ///< 刹车BK滤波设置
|
||||
}stc_tim3_m23_bk_input_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 死区功能配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_dt_cfg
|
||||
{
|
||||
boolean_t bEnDeadTime; ///< 刹车时CHA端口状态设置
|
||||
uint8_t u8DeadTimeValue; ///< 刹车时CHA端口状态设置
|
||||
}stc_tim3_m23_dt_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 触发ADC配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_adc_trig_cfg
|
||||
{
|
||||
boolean_t bEnTrigADC; ///< 触发ADC全局控制
|
||||
boolean_t bEnUevTrigADC; ///< 事件更新触发ADC
|
||||
boolean_t bEnCH0ACmpTrigADC; ///< CH0A比较匹配触发ADC
|
||||
boolean_t bEnCH0BCmpTrigADC; ///< CH0B比较匹配触发ADC
|
||||
boolean_t bEnCH1ACmpTrigADC; ///< CH0A比较匹配触发ADC
|
||||
boolean_t bEnCH1BCmpTrigADC; ///< CH0B比较匹配触发ADC
|
||||
boolean_t bEnCH2ACmpTrigADC; ///< CH0A比较匹配触发ADC
|
||||
boolean_t bEnCH2BCmpTrigADC; ///< CH0B比较匹配触发ADC
|
||||
}stc_tim3_m23_adc_trig_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief DMA触发 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_trig_dma_cfg
|
||||
{
|
||||
boolean_t bUevTrigDMA; ///< 更新 触发DMA使能
|
||||
boolean_t bTITrigDMA; ///< Trig 触发DMA功能
|
||||
boolean_t bCmpA0TrigDMA; ///< CH0A捕获比较触发DMA使能
|
||||
boolean_t bCmpB0TrigDMA; ///< CH0B捕获比较触发DMA使能
|
||||
boolean_t bCmpA1TrigDMA; ///< CH1A捕获比较触发DMA使能
|
||||
boolean_t bCmpB1TrigDMA; ///< CH1B捕获比较触发DMA使能
|
||||
boolean_t bCmpA2TrigDMA; ///< CH2A捕获比较触发DMA使能
|
||||
boolean_t bCmpB2TrigDMA; ///< CH2B捕获比较触发DMA使能
|
||||
en_tim3_m23_mscr_ccds_t enCmpUevTrigDMA; ///< 比较模式下DMA比较触发选择
|
||||
}stc_tim3_m23_trig_dma_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 主从模式 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_master_slave_cfg
|
||||
{
|
||||
en_tim3_m23_mscr_msm_t enMasterSlaveSel; ///< 主从模式选择
|
||||
en_tim3_m23_mscr_mms_t enMasterSrc; ///< 主模式触发源选择
|
||||
en_tim3_m23_mscr_sms_t enSlaveModeSel; ///< 从模式选择
|
||||
en_tim3_mscr_ts_t enTsSel; ///< 触发输入源选择
|
||||
}stc_tim3_m23_master_slave_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief OCREF清除功能 配置结构体定义(模式23)
|
||||
*****************************************************************************/
|
||||
typedef struct stc_tim3_m23_OCREF_Clr_cfg
|
||||
{
|
||||
en_tim3_m23ce_occs_t enOCRefClrSrcSel; ///< OCREF清除源选择
|
||||
boolean_t bVCClrEn; ///< 是否使能来自VC的OCREF_Clr
|
||||
}stc_tim3_m23_OCREF_Clr_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
//中断相关函数
|
||||
|
||||
//中断标志获取
|
||||
boolean_t Tim3_GetIntFlag(en_tim3_irq_type_t enTim3Irq);
|
||||
//中断标志清除
|
||||
en_result_t Tim3_ClearIntFlag(en_tim3_irq_type_t enTim3Irq);
|
||||
//所有中断标志清除
|
||||
en_result_t Tim3_ClearAllIntFlag(void);
|
||||
//模式0中断使能
|
||||
en_result_t Tim3_Mode0_EnableIrq(void);
|
||||
//模式1中断使能
|
||||
en_result_t Tim3_Mode1_EnableIrq (en_tim3_irq_type_t enTim3Irq);
|
||||
//模式2中断使能
|
||||
en_result_t Tim3_Mode23_EnableIrq (en_tim3_irq_type_t enTim3Irq);
|
||||
//模式0中断禁止
|
||||
en_result_t Tim3_Mode0_DisableIrq(void);
|
||||
//模式1中断禁止
|
||||
en_result_t Tim3_Mode1_DisableIrq (en_tim3_irq_type_t enTim3Irq);
|
||||
//模式2中断禁止
|
||||
en_result_t Tim3_Mode23_DisableIrq (en_tim3_irq_type_t enTim3Irq);
|
||||
|
||||
|
||||
//模式0初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Tim3_Mode0_Init(stc_tim3_mode0_cfg_t* pstcCfg);
|
||||
//timer 启动/停止
|
||||
en_result_t Tim3_M0_Run(void);
|
||||
en_result_t Tim3_M0_Stop(void);
|
||||
//重载值设置
|
||||
en_result_t Tim3_M0_ARRSet(uint16_t u16Data);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Tim3_M0_Cnt16Set(uint16_t u16Data);
|
||||
uint16_t Tim3_M0_Cnt16Get(void);
|
||||
//32位计数值设置/获取
|
||||
en_result_t Tim3_M0_Cnt32Set(uint32_t u32Data);
|
||||
uint32_t Tim3_M0_Cnt32Get(void);
|
||||
//端口输出使能/禁止设定
|
||||
en_result_t Tim3_M0_Enable_Output(boolean_t bEnOutput);
|
||||
//翻转使能/禁止(低电平)设定
|
||||
en_result_t Tim3_M0_EnTOG(boolean_t bEnTOG);
|
||||
|
||||
//模式1初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Tim3_Mode1_Init(stc_tim3_mode1_cfg_t* pstcCfg);
|
||||
//PWC 输入配置
|
||||
en_result_t Tim3_M1_Input_Cfg(stc_tim3_pwc_input_cfg_t* pstcCfg);
|
||||
//PWC测量边沿起始结束选择
|
||||
en_result_t Tim3_M1_PWC_Edge_Sel(en_tim3_m1cr_Edge_t enEdgeSel);
|
||||
//timer 启动/停止
|
||||
en_result_t Tim3_M1_Run(void);
|
||||
en_result_t Tim3_M1_Stop(void);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Tim3_M1_Cnt16Set(uint16_t u16Data);
|
||||
uint16_t Tim3_M1_Cnt16Get(void);
|
||||
//脉冲宽度测量结果数值获取
|
||||
uint16_t Tim3_M1_PWC_CapValueGet(void);
|
||||
|
||||
|
||||
//模式23初始化及相关功能操作
|
||||
|
||||
//timer配置及初始化
|
||||
en_result_t Tim3_Mode23_Init(stc_tim3_mode23_cfg_t* pstcCfg);
|
||||
//timer 启动/停止
|
||||
en_result_t Tim3_M23_Run(void);
|
||||
en_result_t Tim3_M23_Stop(void);
|
||||
//PWM输出使能
|
||||
en_result_t Tim3_M23_EnPWM_Output(boolean_t bEnOutput, boolean_t bEnAutoOutput);
|
||||
//重载值设置
|
||||
en_result_t Tim3_M23_ARRSet(uint16_t u16Data, boolean_t bArrBufEn);
|
||||
//16位计数值设置/获取
|
||||
en_result_t Tim3_M23_Cnt16Set(uint16_t u16Data);
|
||||
uint16_t Tim3_M23_Cnt16Get(void);
|
||||
//比较捕获寄存器CCR0A/CCR0B设置/读取
|
||||
en_result_t Tim3_M23_CCR_Set(en_tim3_m23_ccrx_t enCCRSel, uint16_t u16Data);
|
||||
uint16_t Tim3_M23_CCR_Get(en_tim3_m23_ccrx_t enCCRSel);
|
||||
//PWM互补输出模式下,GATE功能选择
|
||||
en_result_t Tim3_M23_GateFuncSel(stc_tim3_m23_gate_cfg_t* pstcCfg);
|
||||
//主从模式配置
|
||||
en_result_t Tim3_M23_MasterSlave_Set(stc_tim3_m23_master_slave_cfg_t* pstcCfg);
|
||||
//CH0A/CH0B比较通道控制
|
||||
en_result_t Tim3_M23_PortOutput_Cfg(en_tim3_channel_t enTim3Chx, stc_tim3_m23_compare_cfg_t* pstcCfg);
|
||||
//CH0A/CH0B输入控制
|
||||
en_result_t Tim3_M23_PortInput_Cfg(en_tim3_channel_t enTim3Chx, stc_tim3_m23_input_cfg_t* pstcCfg);
|
||||
//ERT输入控制
|
||||
en_result_t Tim3_M23_ETRInput_Cfg(stc_tim3_m23_etr_input_cfg_t* pstcCfg);
|
||||
//刹车BK输入控制
|
||||
en_result_t Tim3_M23_BrakeInput_Cfg(stc_tim3_m23_bk_input_cfg_t* pstcBkCfg);
|
||||
//触发ADC控制
|
||||
en_result_t Tim3_M23_TrigADC_Cfg(stc_tim3_m23_adc_trig_cfg_t* pstcCfg);
|
||||
//死区功能
|
||||
en_result_t Tim3_M23_DT_Cfg(stc_tim3_m23_dt_cfg_t* pstcCfg);
|
||||
//重复周期设置
|
||||
en_result_t Tim3_M23_SetValidPeriod(uint8_t u8ValidPeriod);
|
||||
//OCREF清除功能
|
||||
en_result_t Tim3_M23_OCRefClr(stc_tim3_m23_OCREF_Clr_cfg_t* pstcCfg);
|
||||
//使能DMA传输
|
||||
en_result_t Tim3_M23_EnDMA(stc_tim3_m23_trig_dma_cfg_t* pstcCfg);
|
||||
//捕获比较A软件触发
|
||||
en_result_t Tim3_M23_EnSwTrigCapCmpA(en_tim3_channel_t enTim3Chx);
|
||||
//捕获比较B软件触发
|
||||
en_result_t Tim3_M23_EnSwTrigCapCmpB(en_tim3_channel_t enTim3Chx);
|
||||
//软件更新使能
|
||||
en_result_t Tim3_M23_EnSwUev(void);
|
||||
//软件触发使能
|
||||
en_result_t Tim3_M23_EnSwTrig(void);
|
||||
//软件刹车使能
|
||||
en_result_t Tim3_M23_EnSwBk(void);
|
||||
|
||||
|
||||
//@} // Tim3Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __BT_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file trim.h
|
||||
**
|
||||
** TRIM 数据结构及API声明
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-21 Lux V1.0
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __TRIM_H__
|
||||
#define __TRIM_H__
|
||||
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup TrimGroup Clock Trimming (TRIM)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
** Global pre-processor symbols/macros ('#define')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 监测模式使能枚举重定义 (MON_EN)
|
||||
*****************************************************************************/
|
||||
typedef enum en_trim_monitor
|
||||
{
|
||||
TrimMonDisable = 0u, ///< 禁止
|
||||
TrimMonEnable = 0x40u, ///< 使能
|
||||
}en_trim_monitor_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 待校准/监测时钟选择枚举重定义 (CALCLK_SEL)
|
||||
*****************************************************************************/
|
||||
typedef enum en_trim_calclksel
|
||||
{
|
||||
TrimCalMskRCH = 0x000u, ///< RCH
|
||||
TrimCalMskXTH = 0x010u, ///< XTH
|
||||
TrimCalMskRCL = 0x020u, ///< RCL
|
||||
TrimCalMskXTL = 0x030u, ///< XTL
|
||||
TrimCalMskPLL = 0x100u, ///< PLL
|
||||
}en_trim_calclksel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 参考时钟选择枚举重定义 (REFCLK_SEL)
|
||||
*****************************************************************************/
|
||||
typedef enum en_trim_refclksel
|
||||
{
|
||||
TrimRefMskRCH = 0x0u, ///< RCH
|
||||
TrimRefMskXTH = 0x2u, ///< XTH
|
||||
TrimRefMskRCL = 0x4u, ///< RCL
|
||||
TrimRefMskXTL = 0x6u, ///< XTL
|
||||
TrimRefMskIRC10K = 0x8u, ///< IRC10K
|
||||
TrimRefMskExtClk = 0xau, ///< 外部输入时钟
|
||||
}en_trim_refclksel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief 中断标志类型枚举重定义
|
||||
*****************************************************************************/
|
||||
typedef enum en_trim_inttype
|
||||
{
|
||||
TrimStop = 0x01u, ///< 参考计数器停止标志
|
||||
TrimCalCntOf = 0x02u, ///< 校准计数器溢出标志
|
||||
TrimXTLFault = 0x04u, ///< XTL 失效标志
|
||||
TrimXTHFault = 0x08u, ///< XTH 失效标志
|
||||
TrimPLLFault = 0x10u, ///< PLL 失效标志
|
||||
}en_trim_inttype_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief TRIM 配置结构体定义
|
||||
*****************************************************************************/
|
||||
typedef struct stc_trim_cfg
|
||||
{
|
||||
en_trim_monitor_t enMON; ///< 监测模式使能
|
||||
en_trim_calclksel_t enCALCLK; ///< 校准时钟选择
|
||||
uint32_t u32CalCon; ///< 校准计数器溢出值配置
|
||||
en_trim_refclksel_t enREFCLK; ///< 参考时钟选择
|
||||
uint32_t u32RefCon; ///< 参考计数器初值配置
|
||||
}stc_trim_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
*****************************************************************************/
|
||||
///<<功能配置及操作函数
|
||||
///<Trim 配置及初始化
|
||||
en_result_t Trim_Init(stc_trim_cfg_t* pstcCfg);
|
||||
///<校准/监测启动/停止
|
||||
void Trim_Run(void);
|
||||
void Trim_Stop(void);
|
||||
|
||||
///<参考计数器计数值获取
|
||||
uint32_t Trim_RefCntGet(void);
|
||||
///<校准计数器计数值获取
|
||||
uint32_t Trim_CalCntGet(void);
|
||||
|
||||
///<中断操作相关函数
|
||||
///中断使能/禁止
|
||||
void Trim_EnableIrq(void);
|
||||
void Trim_DisableIrq(void);
|
||||
///<中断标志获取
|
||||
boolean_t Trim_GetIntFlag(en_trim_inttype_t enIntType);
|
||||
///<中断标志清除
|
||||
en_result_t Trim_ClearIntFlag(en_trim_inttype_t enIntType);
|
||||
|
||||
//@} // TrimGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __TRIM_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file trng.h
|
||||
**
|
||||
** Headerfile for RNG functions
|
||||
** @link RNG Group Some description @endlink
|
||||
**
|
||||
** History:
|
||||
** - 2018-04-15 Lux First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __TRNG_H__
|
||||
#define __TRNG_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup TrngGroup (TRNG)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/**
|
||||
*******************************************************************************
|
||||
** function prototypes.
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable declarations ('extern', definition in C source)
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
///< 随机数初始化(上电第一次生成随机数)
|
||||
en_result_t Trng_Init(void);
|
||||
///< 生成随机数(非上电第一次生成随机数)
|
||||
en_result_t Trng_Generate(void);
|
||||
///< 获取64bits随机数(执行随机数初始化或生成随机数函数后可使用该函数获取随机数值)
|
||||
uint32_t Trng_GetData0(void);
|
||||
uint32_t Trng_GetData1(void);
|
||||
|
||||
//@} // Trng Group
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __TRNG_H__ */
|
||||
/*******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file uart.h
|
||||
**
|
||||
** Headerfile for UART functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2017-05-10 Cathy First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __UART_H__
|
||||
#define __UART_H__
|
||||
/*****************************************************************************
|
||||
* Include files
|
||||
*****************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup UartGroup Universal Asynchronous Receiver/Transmitter (UART)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
**\brief uart通道选择
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart多机模式地址帧/数据帧或者奇偶校验
|
||||
******************************************************************************/
|
||||
typedef enum en_uart_mmdorck
|
||||
{
|
||||
UartMskDataOrAddr = 0u, ///<多机模式时,通过读写SBUF[8]决定帧为数据帧或地址帧
|
||||
UartMskEven = 0x4u, ///<非多机模式偶校验
|
||||
UartMskOdd = 0x8u, ///<非多机模式奇校验
|
||||
}en_uart_mmdorck_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart多机模式及从机地址和地址掩码配置
|
||||
******************************************************************************/
|
||||
typedef struct stc_uart_multimode
|
||||
{
|
||||
uint8_t u8SlaveAddr; ///<从机地址
|
||||
uint8_t u8SaddEn; ///<从及地址掩码
|
||||
}stc_uart_multimode_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart 四种工作模式选择
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_uart_mode
|
||||
{
|
||||
UartMskMode0 = 0x00u, ///<模式0
|
||||
UartMskMode1 = 0x40u, ///<模式1
|
||||
UartMskMode2 = 0x80u, ///<模式2
|
||||
UartMskMode3 = 0xc0u, ///<模式3
|
||||
} en_uart_mode_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart stop长度选择
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum en_uart_stop
|
||||
{
|
||||
UartMsk1bit = 0x0000u, ///<1位停止位
|
||||
UartMsk1_5bit = 0x4000u, ///<1.5位停止位
|
||||
UartMsk2bit = 0x8000u, ///<2位停止位
|
||||
} en_uart_stop_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart 功能使能
|
||||
******************************************************************************/
|
||||
typedef enum en_uart_func
|
||||
{
|
||||
UartRenFunc = 4u, ///<0-TX; ///<1-非mode0模式代表RX&TX ,mode0模式代表RX;
|
||||
UartDmaRxFunc = 16u, ///<DMA接收功能
|
||||
UartDmaTxFunc = 17u, ///<DMA发送功能
|
||||
UartRtsFunc = 18u, ///<硬件流RTS功能
|
||||
UartCtsFunc = 19u, ///<硬件流CTS功能
|
||||
UartHdFunc = 22u, ///<单线半双工功能
|
||||
}en_uart_func_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart中断使能控制
|
||||
******************************************************************************/
|
||||
typedef enum en_uart_irq_sel
|
||||
{
|
||||
UartRxIrq = 0u, ///<接收中断使能
|
||||
UartTxIrq = 1u, ///<发送中断使能
|
||||
UartTxEIrq = 8u, ///<TX空中断使能
|
||||
UartPEIrq = 13u, ///<奇偶校验中断使能
|
||||
UartCtsIrq = 20u, ///<CTS信号翻转中断使能
|
||||
UartFEIrq = 21u, ///<帧错误中断使能
|
||||
}en_uart_irq_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart 状态标志位
|
||||
******************************************************************************/
|
||||
typedef enum en_uart_status
|
||||
{
|
||||
UartRC = 0u, ///<接收数据完成标记
|
||||
UartTC = 1u, ///<发送数据完成标记
|
||||
UartFE = 2u, ///<帧错误标记
|
||||
UartTxe = 3u, ///<TXbuff空标记
|
||||
UartPE = 4u, ///<奇偶校验错误标记
|
||||
UartCtsIf = 5u, ///<CTS中断标记
|
||||
UartCts = 6u, ///<CTS信号标记
|
||||
}en_uart_status_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart 通道采样分频配置
|
||||
******************************************************************************/
|
||||
typedef enum en_uart_clkdiv
|
||||
{
|
||||
UartMsk16Or32Div = 0u, ///<模式0无效,模式1/3为16分频,模式2为32分频
|
||||
UartMsk8Or16Div = 0x200u, ///<模式0无效,模式1/3为8分频,模式2为16分频
|
||||
}en_uart_clkdiv_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief uart 通道Mode1和Mode3波特率计算参数
|
||||
******************************************************************************/
|
||||
typedef struct stc_uart_baud
|
||||
{
|
||||
en_uart_clkdiv_t enClkDiv; ///<采样分频
|
||||
uint32_t u32Pclk; ///<pclk
|
||||
uint32_t u32Baud; ///<波特率
|
||||
} stc_uart_baud_t;
|
||||
/**
|
||||
******************************************************************************
|
||||
** \uart 总体配置
|
||||
******************************************************************************/
|
||||
|
||||
typedef struct stc_uart_cfg
|
||||
{
|
||||
en_uart_mode_t enRunMode; ///<四种模式配置
|
||||
en_uart_mmdorck_t enMmdorCk; ///<校验模式
|
||||
en_uart_stop_t enStopBit; ///<停止位长度
|
||||
stc_uart_baud_t stcBaud; ///<Mode1/3波特率配置
|
||||
} stc_uart_cfg_t;
|
||||
|
||||
//UART初始化
|
||||
en_result_t Uart_Init(M0P_UART_TypeDef* UARTx, stc_uart_cfg_t* pstcCfg);
|
||||
|
||||
///< UART 单线模式使能/禁止
|
||||
void Uart_HdModeEnable(M0P_UART_TypeDef* UARTx);
|
||||
void Uart_HdModeDisable(M0P_UART_TypeDef* UARTx);
|
||||
|
||||
//UART模块多机模式设置函数
|
||||
en_result_t Uart_SetMultiMode(M0P_UART_TypeDef* UARTx,stc_uart_multimode_t* pstcMultiCfg);
|
||||
|
||||
//TB8数据设置
|
||||
void Uart_SetTb8(M0P_UART_TypeDef* UARTx, boolean_t bTB8Value);
|
||||
//RB8数据获取
|
||||
boolean_t Uart_GetRb8(M0P_UART_TypeDef* UARTx);
|
||||
|
||||
//中断相关设置函数
|
||||
en_result_t Uart_EnableIrq(M0P_UART_TypeDef* UARTx, en_uart_irq_sel_t enIrqSel);
|
||||
en_result_t Uart_DisableIrq(M0P_UART_TypeDef* UARTx, en_uart_irq_sel_t enIrqSel);
|
||||
|
||||
//功能使能和禁止
|
||||
en_result_t Uart_EnableFunc(M0P_UART_TypeDef* UARTx, en_uart_func_t enFunc);
|
||||
en_result_t Uart_DisableFunc(M0P_UART_TypeDef* UARTx, en_uart_func_t enFunc);
|
||||
|
||||
//状态位的获取和清除
|
||||
uint8_t Uart_GetIsr(M0P_UART_TypeDef* UARTx);
|
||||
boolean_t Uart_GetStatus(M0P_UART_TypeDef* UARTx,en_uart_status_t enStatus);
|
||||
en_result_t Uart_ClrIsr(M0P_UART_TypeDef* UARTx);
|
||||
en_result_t Uart_ClrStatus(M0P_UART_TypeDef* UARTx,en_uart_status_t enStatus);
|
||||
|
||||
//数据收发操作
|
||||
///< 数据查询模式发送
|
||||
en_result_t Uart_SendDataPoll(M0P_UART_TypeDef* UARTx, uint8_t u8Data);
|
||||
///< 数据中断模式发送
|
||||
en_result_t Uart_SendDataIt(M0P_UART_TypeDef* UARTx, uint8_t u8Data);
|
||||
uint8_t Uart_ReceiveData(M0P_UART_TypeDef* UARTx);
|
||||
|
||||
//@} // UartGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __UART_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
+299
@@ -0,0 +1,299 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/******************************************************************************/
|
||||
/** \file vc.h
|
||||
**
|
||||
** Headerfile for Voltage Comparator functions
|
||||
** @link VC Group Some description @endlink
|
||||
**
|
||||
** - 2019-04-10 First Version
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __VC_H__
|
||||
#define __VC_H__
|
||||
|
||||
/******************************************************************************
|
||||
* Include files
|
||||
******************************************************************************/
|
||||
#include "ddl.h"
|
||||
|
||||
/* C binding of definitions if building with C++ compiler */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup VcGroup Voltage Comparator (VC)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC通道
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
VcChannel0 = 0u, // 通道0
|
||||
VcChannel1 = 1u, // 通道1
|
||||
VcChannel2 = 2u // 通道2
|
||||
}en_vc_channel_t;
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC迟滞 VC_CR VCx_HYS_SEL(x=0、1、2)
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
VcDelayoff = 0u, // 迟滞关闭
|
||||
VcDelay10mv = 1u, // 迟滞10mv
|
||||
VcDelay20mv = 2u, // 迟滞20mv
|
||||
VcDelay30mv = 3u, // 迟滞30mv
|
||||
}en_vc_cmp_delay_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC偏置电流 VC_CR VCx_BIAS_SEL(x=0、1、2)
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
VcBias300na = 0u, // 偏置电流300nA
|
||||
VcBias1200na = 1u, // 偏置电流1.2uA
|
||||
VcBias10ua = 2u, // 偏置电流10uA
|
||||
VcBias20ua = 3u, // 偏置电流20uA
|
||||
}en_vc_bias_current_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC输出滤波时间 VCx_CR debounce_time(x=0、1、2)
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
VcFilter7us = 0u, // 输出滤波时间7us
|
||||
VcFilter14us = 1u, // 输出滤波时间14us
|
||||
VcFilter28us = 2u, // 输出滤波时间28us
|
||||
VcFilter112us = 3u, // 输出滤波时间112us
|
||||
VcFilter450us = 4u, // 输出滤波时间450us
|
||||
VcFilter1800us = 5u, // 输出滤波时间1.8ms
|
||||
VcFilter7200us = 6u, // 输出滤波时间7.2ms
|
||||
VcFilter28800us = 7u, // 输出滤波时间28.8ms
|
||||
}en_vc_resp_filter_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC P端输入
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
//VC0 //VC1 //VC2
|
||||
VcInPCh0 = 0u, // 输入通道0 PC0 输入通道0 PA0 输入通道0 PA5
|
||||
VcInPCh1 = 1u, // 输入通道1 PC1 输入通道1 PA1 输入通道1 PB1
|
||||
VcInPCh2 = 2u, // 输入通道2 PC2 输入通道2 PA2 输入通道2 PE9
|
||||
VcInPCh3 = 3u, // 输入通道3 PC3 输入通道3 PA3 输入通道3 PE10
|
||||
VcInPCh4 = 4u, // 输入通道4 PA0 输入通道4 PA4 输入通道4 PE11
|
||||
VcInPCh5 = 5u, // 输入通道5 PA1 输入通道5 PA5 输入通道5 PE13
|
||||
VcInPCh6 = 6u, // 输入通道6 PA2 输入通道6 PB1 输入通道6 PE14
|
||||
VcInPCh7 = 7u, // 输入通道7 PA3 输入通道7 PB2 输入通道7 PE15
|
||||
VcInPCh8 = 8u, // 输入通道7 PA4 输入通道8 PB10 输入通道8 PB11
|
||||
VcInPCh9 = 9u, // 输入通道7 PA5 输入通道9 PB12 输入通道9 PB14
|
||||
VcInPCh10 = 10u, // 输入通道7 PA6 输入通道10 PB13 输入通道10 PD9
|
||||
VcInPCh11 = 11u, // 输入通道7 PA7 输入通道11 PB14 输入通道11 PD10
|
||||
VcInPCh12 = 12u, // 输入通道7 PB4 输入通道12 PB4 输入通道12 PD11
|
||||
VcInPCh13 = 13u, // 输入通道7 PB5 输入通道13 DAC0 输入通道13 PC7
|
||||
VcInPCh14 = 14u, // 输入通道7 PB6 输入通道14 PB6 输入通道14 DAC0
|
||||
VcInPCh15 = 15u, // 输入通道7 DAC0 输入通道15 PB7 输入通道15 DAC0
|
||||
}en_vc_input_p_src_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC N端输入
|
||||
*****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
//VC0 //VC1 //VC2
|
||||
VcInNCh0 = 0u, // 输入通道0 PA0 输入通道0 PC0 输入通道0 PA5
|
||||
VcInNCh1 = 1u, // 输入通道1 PA1 输入通道1 PC1 输入通道1 PB1
|
||||
VcInNCh2 = 2u, // 输入通道2 PA2 输入通道2 PC2 输入通道2 PE11
|
||||
VcInNCh3 = 3u, // 输入通道3 PA3 输入通道3 PC3 输入通道3 PE15
|
||||
VcInNCh4 = 4u, // 输入通道4 PA4 输入通道4 PA0 输入通道4 PB11
|
||||
VcInNCh5 = 5u, // 输入通道5 PA5 输入通道5 PA1 输入通道5 PB14
|
||||
VcInNCh6 = 6u, // 输入通道6 PA6 输入通道6 PB0 输入通道6 PD10
|
||||
VcInNCh7 = 7u, // 输入通道7 PA7 输入通道7 PB1 输入通道7 PD11
|
||||
VcInNCh8 = 8u, // 输入通道8 PC4 输入通道8 PB2 输入通道8 PC7
|
||||
VcInNCh9 = 9u, // 输入通道9 PC5 输入通道9 PB3 输入通道9 DAC0
|
||||
VcInNCh10 = 10u, // 输入通道10 DAC0 输入通道10 DAC1 输入通道10 DAC0
|
||||
ResDivOut = 11u, // 电阻分压 电阻分压 NA
|
||||
AiTs = 12u, // 内部温度传感器输出电压 内部温度传感器输出电压 内部温度传感器输出电压
|
||||
AiBg1p2 = 13u, // 内部基准1.2V 内部基准1.2V 内部基准1.2V
|
||||
AiAdcVref = 14u, // ADC参考电压VREF ADC参考电压VREF ADC参考电压VREF
|
||||
AiLdo = 15u, // LDO输出电压 LDO输出电压 LDO输出电压
|
||||
}en_vc_input_n_src_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC中断触发方式
|
||||
*****************************************************************************/
|
||||
typedef enum en_vc_irq_sel
|
||||
{
|
||||
VcIrqNone = 0u, ///< 无中断
|
||||
VcIrqRise = 1u, ///< 上升沿触发
|
||||
VcIrqFall = 2u, ///< 下降沿触发
|
||||
VcIrqHigh = 3u, ///< 高电平触发
|
||||
|
||||
}en_vc_irq_sel_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC状态 VC_IFR
|
||||
*****************************************************************************/
|
||||
typedef enum en_vc_stat
|
||||
{
|
||||
Vc0_Intf = 0u, // VC0中断标志
|
||||
Vc1_Intf = 1u, // VC1中断标志
|
||||
Vc0_Filter = 2u, // VC0 Filter 后的状态
|
||||
Vc1_Filter = 3u, // VC1 Filter 后的状态
|
||||
Vc2_Intf = 4u, // VC2中断标志
|
||||
Vc2_Filter = 5u // VC2 Filter 后的状态
|
||||
}en_vc_ifr_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC输出配置 VCx_OUT_CFG(x=0、1、2)
|
||||
** \note 对于VC0,CHX = CHA;对于VC1 VC2,CHX = CHB
|
||||
*****************************************************************************/
|
||||
typedef enum en_vc_output_cfg
|
||||
{
|
||||
VcOutInvTimer = 0u, // 结果输出反向到各Timer0,1,2,3 REFCLR
|
||||
VcOutTIM0RCLR = 1u, // 结果输出到TIM0 REFCLR使能控制
|
||||
VcOutTIM1RCLR = 2u, // 结果输出到TIM1 REFCLR使能控制
|
||||
VcOutTIM2RCLR = 3u, // 结果输出到TIM2 REFCLR使能控制
|
||||
VcOutTIM3RCLR = 4u, // 结果输出到TIM3 REFCLR使能控制
|
||||
VcOutTIMBK = 5u, // 结果输出到Timer0,1,2,3刹车控制
|
||||
VcOutInvTIM4 = 9u, // 结果输出到Timer4反向使能
|
||||
VcOutTIM4 = 10u, // 结果输出到Timer4捕获输入CHX使能
|
||||
VcOutInvTIM5 = 11u, // 结果输出到Timer5反向使能
|
||||
VcOutTIM5 = 12u, // 结果输出到Timer5捕获输入CHX使能
|
||||
VcOutInvTIM6 = 13u, // 结果输出到Timer6反向使能
|
||||
VcOutTIM6 = 14u, // 结果输出到Timer6捕获输入CHX使能
|
||||
VcOutBrake = 15u, // 结果作为Advanced Timer刹车控制
|
||||
VcOutDisable = 16u // 结果输出除能
|
||||
}en_vc_output_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC DIV参考电压Vref选择 VC_CR VC_REF2P5_SEL
|
||||
*****************************************************************************/
|
||||
typedef enum en_vc_div_vref
|
||||
{
|
||||
VcDivVrefAvcc = 0u, ///< AVCC
|
||||
VcDivVrefAdc = 1u, ///< ADC_CR0 SREF选择参考电压
|
||||
}en_vc_div_vref_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC模块配置 VC_CR VC_REF2P5_SEL VC_DIV_EN VC_DIV
|
||||
*****************************************************************************/
|
||||
typedef struct stc_vc_dac_cfg
|
||||
{
|
||||
boolean_t bDivEn; // VC_CR: VC_DIV_EN
|
||||
uint8_t u8DivVal; // VC_CR: VC_DIV 范围:0-63
|
||||
en_vc_div_vref_t enDivVref; // VC_CR: VC_REF2P5_SEL
|
||||
}stc_vc_dac_cfg_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief VC通道配置
|
||||
*****************************************************************************/
|
||||
typedef struct stc_vc_channel_cfg
|
||||
{
|
||||
en_vc_channel_t enVcChannel; // VC通道选择
|
||||
en_vc_cmp_delay_t enVcCmpDly; // VC迟滞
|
||||
en_vc_bias_current_t enVcBiasCurrent; // VC功耗选择
|
||||
en_vc_resp_filter_t enVcFilterTime; // 输出滤波时间
|
||||
en_vc_input_p_src_t enVcInPin_P; // P端输入
|
||||
en_vc_input_n_src_t enVcInPin_N; // N端输入
|
||||
en_vc_output_cfg_t enVcOutCfg; // 输出配置
|
||||
boolean_t bFlten; // 滤波输出使能
|
||||
}stc_vc_channel_cfg_t;
|
||||
|
||||
/******************************************************************************
|
||||
* Global definitions
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Local type definitions ('typedef')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global variable definitions ('extern')
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global function prototypes (definition in C source)
|
||||
******************************************************************************/
|
||||
extern void Vc_CfgItType(en_vc_channel_t Channelx, en_vc_irq_sel_t ItType);
|
||||
extern void Vc_ItCfg(en_vc_channel_t Channelx, boolean_t NewStatus);
|
||||
extern boolean_t Vc_GetItStatus(en_vc_ifr_t Result);
|
||||
extern void Vc_ClearItStatus(en_vc_ifr_t NewStatus);
|
||||
extern en_result_t Vc_DacInit(stc_vc_dac_cfg_t *pstcDacCfg);
|
||||
extern void Vc_Init(stc_vc_channel_cfg_t *pstcChannelCfg);
|
||||
extern void Vc_Cmd(en_vc_channel_t enChannel, boolean_t NewStatus);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __VC_H__ */
|
||||
/******************************************************************************
|
||||
* EOF (not truncated)
|
||||
******************************************************************************/
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2017, Huada Semiconductor Co.,Ltd All rights reserved.
|
||||
*
|
||||
* This software is owned and published by:
|
||||
* Huada Semiconductor Co.,Ltd ("HDSC").
|
||||
*
|
||||
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
|
||||
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
*
|
||||
* This software contains source code for use with HDSC
|
||||
* components. This software is licensed by HDSC to be adapted only
|
||||
* for use in systems utilizing HDSC components. HDSC shall not be
|
||||
* responsible for misuse or illegal use of this software for devices not
|
||||
* supported herein. HDSC is providing this software "AS IS" and will
|
||||
* not be responsible for issues arising from incorrect user implementation
|
||||
* of the software.
|
||||
*
|
||||
* Disclaimer:
|
||||
* HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
|
||||
* REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
|
||||
* ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
|
||||
* WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
|
||||
* WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
|
||||
* WARRANTY OF NONINFRINGEMENT.
|
||||
* HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
|
||||
* NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
|
||||
* LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
|
||||
* LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
|
||||
* INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
|
||||
* SAVINGS OR PROFITS,
|
||||
* EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
|
||||
* INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
|
||||
* FROM, THE SOFTWARE.
|
||||
*
|
||||
* This software may be replicated in part or whole for the licensed use,
|
||||
* with the restriction that this Disclaimer and Copyright notice must be
|
||||
* included with each copy of this software, whether used in part or whole,
|
||||
* at all times.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/** \file wdt.h
|
||||
**
|
||||
** Headerfile for WDT functions
|
||||
**
|
||||
**
|
||||
** History:
|
||||
** - 2017-05-10 Cathy First Version
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __WDT_H__
|
||||
#define __WDT_H__
|
||||
|
||||
#include "ddl.h"
|
||||
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \defgroup WdtGroup Watchdog Timer (WDT)
|
||||
**
|
||||
******************************************************************************/
|
||||
//@{
|
||||
|
||||
/******************************************************************************/
|
||||
/* Global pre-processor symbols/macros ('#define') */
|
||||
/******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Global type definitions
|
||||
******************************************************************************/
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief wdt溢出后复位或中断配置
|
||||
*****************************************************************************/
|
||||
typedef enum en_wdt_func
|
||||
{
|
||||
WdtResetEn = 0, ///<复位使能
|
||||
WdtIntEn = 1, ///<中断使能
|
||||
}en_wdt_func_t;
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
** \brief wdt当前运行时间配置数据类型定义
|
||||
*****************************************************************************/
|
||||
|
||||
typedef enum en_wdt_time
|
||||
{
|
||||
WdtT1ms6 = 0u, ///<1.6ms
|
||||
WdtT3ms2 = 1u, ///<3.2ms
|
||||
WdtT6ms4 = 2u, ///<6.4ms
|
||||
WdtT13ms = 3u, ///<13ms
|
||||
WdtT26ms = 4u, ///<26ms
|
||||
WdtT51ms = 5u, ///<51ms
|
||||
WdtT102ms = 6u, ///<102ms
|
||||
WdtT205ms = 7u, ///<205ms
|
||||
WdtT500ms = 8u, ///<500ms
|
||||
WdtT820ms = 9u, ///<820ms
|
||||
WdtT1s64 = 10u, ///<1.64s
|
||||
WdtT3s28 = 11u, ///<3.28s
|
||||
WdtT6s55 = 12u, ///<6.55s
|
||||
WdtT13s1 = 13u, ///<13.1s
|
||||
WdtT26s2 = 14u, ///<26.2s
|
||||
WdtT52s4 = 15u, ///<52.4s
|
||||
}en_wdt_time_t;
|
||||
|
||||
|
||||
//wdt初始化
|
||||
en_result_t Wdt_Init(en_wdt_func_t enFunc, en_wdt_time_t enTime);
|
||||
|
||||
//wdt开始和停止
|
||||
void Wdt_Start(void);
|
||||
//喂狗处理
|
||||
void Wdt_Feed(void);
|
||||
//喂狗处理
|
||||
void Wdt_IrqClr(void);
|
||||
//wdt溢出时间设置
|
||||
void Wdt_WriteWdtLoad(uint8_t u8LoadValue);
|
||||
///< 当前计数时间获取
|
||||
uint8_t Wdt_ReadWdtValue(void);
|
||||
//< 中断状态获取
|
||||
boolean_t Wdt_GetIrqStatus(void);
|
||||
///< 运行状态获取
|
||||
boolean_t Wdt_ReadwdtStatus(void);
|
||||
|
||||
//@} // WdtGroup
|
||||
|
||||
#ifdef __cplusplus
|
||||
#endif
|
||||
|
||||
#endif /* __WDT_H__ */
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user