HW PDB

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_PDB.c和HW_PDB.h是PDB可编程延时模块的固件驱动文件,这里定义了该模块的初始化函数、反初始化函数、ADC、DAC模块的触发配置函数等。开发者可以通过该模块实现ADC、DAC模块的硬件触发功能,也可以作为普通定时器使用。

结构体

PDB_InitTypeDef

变量 描述 取值 初始化
uint32 PDB_CounterPeriodUs 设置PDBx计数器溢出周期,单位us 1~0xFFFFFFFF 不必须初始化,PDB_CounterPeriodUs、PDB_CounterPeriodMs、PDB_CounterPeriodS至少一个初始化
uint32 PDB_CounterPeriodMs 设置PDBx计数器溢出周期,单位ms 1~0xFFFFFFFF 不必须初始化,PDB_CounterPeriodUs、PDB_CounterPeriodMs、PDB_CounterPeriodS至少一个初始化
uint32 PDB_CounterPeriodS 设置PDBx计数器溢出周期,单位s 1~0xFFFFFFFF 不必须初始化,PDB_CounterPeriodUs、PDB_CounterPeriodMs、PDB_CounterPeriodS至少一个初始化
uint8 PDB_LoadModeSel 选择PDBx模块MOD、IDLY、CHnDLYm、INTx和POyDLY寄存器的加载模式选择 PDB加载模式 不必须初始化,默认LOADMODE_0
uint8 PDB_TriggerInputSourceSel 设置PDBx计数器开始工作的输入触发源 PDB触发源 不必须初始化,默认TRIGGER_EXTERNAL
boolean PDB_ContinuousModeEnable 使能PDBx连续工作模式,使能后PDBx将在第一次触发后连续工作 TRUE-使能连续
FALSE-禁用连续
不必须初始化,默认FALSE
boolean PDB_DmaEnable 使能PDBx模块DMA请求 TRUE-使能
FALSE-禁用
不必须初始化,默认FALSE
boolean PDB_IntEnable 使能PDBx模块中断,时能后当PDBx计数器计数时间等于PDB_Delay后触发中断 TRUE-使能
FALSE-禁用
不必须初始化,默认FALSE
boolean PDB_SeqErrIntEnable 使能PDBx模块序列错误中断 TRUE-使能
FALSE-禁用
不必须初始化,默认FALSE
uint32 PDB_DelayUs 设置PDBx延时寄存器溢出时间,单位us 1~0xFFFFFFFF 不必须初始化
uint32 PDB_DelayMs 设置PDBx延时寄存器溢出时间,单位ms 1~0xFFFFFFFF 不必须初始化
uint32 PDB_DelayS 设置PDBx延时寄存器溢出时间,单位s 1~0xFFFFFFFF 不必须初始化
PDB_ISR_CALLBACK PDB_Isr PDBx中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
PDB_ISR_CALLBACK PDB_SeqErrIsr PDBx序列错误中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_PDB_Init()

函数原型

uint8 LPLD_PDB_Init(PDB_InitTypeDef);

描述

PDBx模块通用初始化函数,初始化PDBx计数器周期、工作模式、触发源、中断等配置

形参

类型 名称 描述 取值
PDB_InitTypeDef pdb_init_struct PDB初始化结构体 结构体定义见PDB_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_PDB_Deinit()

函数原型

void LPLD_PDB_Deinit(void);

描述

PDBx模块反初始化函数,禁用PDBx所有功能

形参

输出

LPLD_PDB_AdcTriggerCfg()

函数原型

uint8 LPLD_PDB_AdcTriggerCfg(ADC_Type *, uint32, uint16);

描述

PDBx触发ADCx模块配置函数

形参

类型 名称 描述 取值
ADC_Type * adcx ADCx模块号 ADC0、ADC1
uint32 cfg PRETRIG_DLY_A;) ADC预触发功能配置
uint16 delay ADCx A或B组的延时输出预触发时间,单位us 0~0xFFFF--0~4095us

输出

0--配置错误
1--配置成功

LPLD_PDB_DacTriggerCfg()

函数原型

uint8 LPLD_PDB_DacTriggerCfg(DAC_Type *, uint32, uint16);

描述

PDBx触发DACx模块配置函数

形参

类型 名称 描述 取值
DAC_Type * dacx DACx模块号 DAC0、DAC1
uint32 cfg DACx触发功能配置 DAC触发功能配置
uint16 uint16 DACx间隔触发时间,单位us 0~0xFFFF--0~4095us

输出

0--配置错误
1--配置成功

其他

LPLD_PDB_EnableIrq()

宏定义原型

#define LPLD_PDB_EnableIrq()    enable_irq(PDB0_IRQn)

描述

使能PDBx中断

形参

输出

LPLD_PDB_DisableIrq()

宏定义原型

#define LPLD_PDB_DisableIrq()   disable_irq(PDB0_IRQn)

描述

禁用PDBx中断

形参

输出

LPLD_PDB_SoftwareTrigger()

宏定义原型

#define LPLD_PDB_SoftwareTrigger()      (PDB0->SC|=PDB_SC_SWTRIG_MASK)

描述

软件触发PDBx计数器开始工作

形参

输出

PDB加载模式

下表的宏定义为结构体PDB_InitTypeDef的变量PDB_LoadModeSel的取值范围。

加载模式 模式描述
LOADMODE_0 模式0,当LDOK写1后立即加载数值到上述寄存器内
LOADMODE_1 模式1,当LDOK写1后且PDBx计数器值等于MOD寄存器值时加载数值到上述寄存器内
LOADMODE_2 模式2,当LDOK写1后且一个输入触发事件被检测到时加载数值到上述寄存器内
LOADMODE_3 模式3,当LDOK写1后且(PDBx计数器值等于MOD寄存器值 或 一个输入触发事件被检测到)时加载数值到上述寄存器内

PDB触发源

下表的宏定义为结构体PDB_InitTypeDef的变量PDB_TriggerInputSourceSel的取值范围。

触发源 描述
TRIGGER_EXTERNAL 外部触发
TRIGGER_CMP0 CMP0模块触发
TRIGGER_CMP1 CMP1模块触发
TRIGGER_CMP2 CMP2模块触发
TRIGGER_PIT0 PIT0模块触发
TRIGGER_PIT1 PIT1模块触发
TRIGGER_PIT2 PIT2模块触发
TRIGGER_PIT3 PIT3模块触发
TRIGGER_FTM0 FTM0模块触发
TRIGGER_FTM1 FTM1模块触发
TRIGGER_FTM2 FTM2模块触发
TRIGGER_RTCALARM RTC Alarm触发
TRIGGER_RTCSECONDS RTC Seconds触发
TRIGGER_LPTMR LPTMR模块触发
TRIGGER_SOFTWARE 软件触发

ADC预触发功能配置

如果ADC使用A组通道,则选用表中ADCx A组配置列的值,否则选用表中ADCx B组配置列的值。

ADCx A组配置 ADCx B组配置 描述
PRETRIG_EN_A PRETRIG_EN_B 使能ADCx的A or B组预触发功能
PRETRIG_DLY_A PRETRIG_DLY_B 使能ADCx的A or B组延时输出预触发功能
PRETRIG_BB_A PRETRIG_BB_B 使能ADCx的A or B组“Back to Back”模式

DAC触发功能配置

下表为DAC触发功能的配置宏定义。

触发功能 描述
EXT_TRIG_EN 使能外部触发
EINT_TRIG_EN 使能内部间隔触发