ECAP外设
1.函数名: ECAP_isBaseValid(uint32_t base)
函数说明:
该函数用于检查指定的eCAP模块基地址是否有效。在调试模式下,此函数可帮助验证所提供的基地址是否是有效的eCAP模块地址。该函数仅在DEBUG
模式下编译生效。
参数说明:
- 输入参数:
-
uint32_t base
: 指定的eCAP模块的基地址。 -
输出参数:
bool
: 如果基地址有效则返回true
,否则返回false
。
2.函数名: ECAP_setEventPrescaler(uint32_t base, uint16_t preScalerValue)
函数说明:
该函数用于设置eCAP模块的输入预分频器值。预分频器的作用是将输入信号的频率缩小。预分频值会在模块内部加倍,例如,preScalerValue
为5时,实际分频器值为10。使用preScalerValue = 1
时,分频器不做改变。该值应小于 ECAP_MAX_PRESCALER_VALUE
。 函数通过ECAP_isBaseValid
宏来验证基地址的合法性。 使用了EALLOW
和EDIS
来启用和禁用对受保护寄存器的写访问。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。uint16_t preScalerValue
: 预分频器的值,该值会应用到eCAP输入信号。预分频器值在内部会乘以2。
输出参数:
- 无返回值。
3.函数名: ECAP_setEventPolarity(uint32_t base, ECAP_Events event, ECAP_EventPolarity polarity)
函数说明:
该函数用于设置指定eCAP事件的极性。事件的极性决定捕获信号的触发边沿。eCAP模块支持4个事件,事件编号范围为ECAP_EVENT_1
到ECAP_EVENT_4
。对于每个事件,极性决定是上升沿还是下降沿触发捕获。使用ECAP_EVNT_RISING_EDGE
表示上升沿,ECAP_EVNT_FALLING_EDGE
表示下降沿。- 该函数通过ECAP_isBaseValid
宏来验证eCAP基地址的合法性。使用了EALLOW
和EDIS
来启用和禁用对受保护寄存器的写访问。 通过偏移计算调整指定事件的极性并写入到相应的寄存器中。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。ECAP_Events event
: 指定的事件编号,范围为ECAP_EVENT_1
到ECAP_EVENT_4
。ECAP_EventPolarity polarity
: 指定的事件极性,可以是ECAP_EVNT_RISING_EDGE
(上升沿)或ECAP_EVNT_FALLING_EDGE
(下降沿)。
输出参数:
- 无返回值。
4.函数名: ECAP_setCaptureMode(uint32_t base, ECAP_CaptureMode mode, ECAP_Events event)
函数说明:
该函数用于设置eCAP模块的捕获模式,可以选择连续捕获模式或单次捕获模式。用户可以指定计数器在某个事件触发时停止或在连续模式下循环回绕。该函数通过修改eCAP模块的相关寄存器来实现相应的设置。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。ECAP_CaptureMode mode
: 捕获模式,可以是以下两种值之一:ECAP_CONTINUOUS_CAPTURE_MODE
: 连续捕获模式。ECAP_ONE_SHOT_CAPTURE_MODE
: 单次捕获模式。
ECAP_Events event
: 触发停止或回绕的事件编号。值应在ECAP_EVENT_1
到ECAP_EVENT_4
之间,分别对应有效的四个事件。
输出参数:
- 无返回值。
备注:
- 该函数首先通过
ECAP_isBaseValid
宏来验证eCAP基地址的有效性。 - 使用了
EALLOW
和EDIS
来启用和禁用对受保护寄存器的写访问。 - 函数通过修改
ECCTL2
寄存器的相关位来设置捕获模式和停止/回绕事件。
5.函数名: ECAP_reArm(uint32_t base)
函数说明:
该函数用于重新使能(重新加载)eCAP模块。通过设置相应的控制寄存器,该函数重新激活eCAP模块以捕获新的事件。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 无返回值。
备注:
- 该函数通过
ECAP_isBaseValid
宏验证eCAP基地址是否有效。 - 使用
EALLOW
和EDIS
来允许和禁止对受保护寄存器的写访问。 - 通过设置
ECCTL2
寄存器中的RE-ARM
位重新使能eCAP模块。
6.函数名: ECAP_enableInterrupt(uint32_t base, uint16_t intFlags)
函数说明:
该函数用于启用指定的eCAP中断源。它通过设置相关中断标志位来启用eCAP模块的特定中断。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。uint16_t intFlags
: 要启用的中断源。有效的中断源包括:ECAP_ISR_SOURCE_CAPTURE_EVENT_1
: 捕获事件1触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_2
: 捕获事件2触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_3
: 捕获事件3触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_4
: 捕获事件4触发中断。ECAP_ISR_SOURCE_COUNTER_OVERFLOW
: 计数器溢出触发中断。ECAP_ISR_SOURCE_COUNTER_PERIOD
: 计数器等于周期触发中断。ECAP_ISR_SOURCE_COUNTER_COMPARE
: 计数器等于比较值触发中断。
输出参数:
- 无返回值。
备注:
- 该函数通过
ECAP_isBaseValid
宏验证eCAP基地址是否有效。 - 使用
EALLOW
和EDIS
来允许和禁止对受保护寄存器的写访问。 - 在
ECEINT
寄存器中设置指定的中断源位以启用对应中断。
7.函数名: ECAP_disableInterrupt(uint32_t base, uint16_t intFlags)
函数说明:
该函数用于禁用指定的eCAP中断源。它通过清除相关中断标志位来禁用eCAP模块的特定中断。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。uint16_t intFlags
: 要禁用的中断源。有效的中断源包括:ECAP_ISR_SOURCE_CAPTURE_EVENT_1
: 捕获事件1触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_2
: 捕获事件2触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_3
: 捕获事件3触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_4
: 捕获事件4触发中断。ECAP_ISR_SOURCE_COUNTER_OVERFLOW
: 计数器溢出触发中断。ECAP_ISR_SOURCE_COUNTER_PERIOD
: 计数器等于周期触发中断。ECAP_ISR_SOURCE_COUNTER_COMPARE
: 计数器等于比较值触发中断。
输出参数:
- 无返回值。
备注:
- 该函数通过
ECAP_isBaseValid
宏验证eCAP基地址是否有效。 - 使用
EALLOW
和EDIS
来允许和禁止对受保护寄存器的写访问。 - 在
ECEINT
寄存器中清除指定的中断源位以禁用对应中断。
8.函数名: ECAP_getInterruptSource(uint32_t base)
函数说明:
该函数用于获取eCAP模块的中断标志。它返回发生的中断类型,以便用户了解具体的中断事件。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 返回值:
- 返回eCAP中断标志,可能的返回值包括:
ECAP_ISR_SOURCE_CAPTURE_EVENT_1
: 捕获事件1触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_2
: 捕获事件2触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_3
: 捕获事件3触发中断。ECAP_ISR_SOURCE_CAPTURE_EVENT_4
: 捕获事件4触发中断。ECAP_ISR_SOURCE_COUNTER_OVERFLOW
: 计数器溢出触发中断。ECAP_ISR_SOURCE_COUNTER_PERIOD
: 计数器等于周期触发中断。ECAP_ISR_SOURCE_COUNTER_COMPARE
: 计数器等于比较值触发中断。
备注:
- 该函数通过
ECAP_isBaseValid
宏验证eCAP基地址是否有效。 - 函数返回
ECFLG
寄存器的内容,并与0xFE
进行位与操作,以获取相关的中断标志。 - 用户可以通过对返回值进行位或操作,检查多个中断是否同时发生。
9.函数名: ECAP_getGlobalInterruptStatus(uint32_t base)
函数说明:
该函数用于获取eCAP模块的全局中断标志。它返回一个布尔值,指示是否存在全局中断。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 返回值:
- 返回布尔值:
true
:如果存在全局eCAP中断。false
:如果没有全局eCAP中断。
备注:
- 该函数通过
ECAP_isBaseValid
宏验证eCAP基地址是否有效。 - 函数检查
ECFLG
寄存器的全局中断位(最低位),以确定全局中断状态。
10.函数名ECAP_getGlobalInterruptStatus(uint32_t base)
函数说明:
该函数用于获取ECAP模块的全局中断状态,返回全局中断位的内容。
在清除中断标志时,以下是有效的中断源:
- ECAP_ISR_SOURCE_CAPTURE_EVENT_1
: 事件 1 生成中断
- ECAP_ISR_SOURCE_CAPTURE_EVENT_2
: 事件 2 生成中断
- ECAP_ISR_SOURCE_CAPTURE_EVENT_3
: 事件 3 生成中断
- ECAP_ISR_SOURCE_CAPTURE_EVENT_4
: 事件 4 生成中断
- ECAP_ISR_SOURCE_COUNTER_OVERFLOW
: 计数器溢出生成中断
- ECAP_ISR_SOURCE_COUNTER_PERIOD
: 计数器等于周期生成中断
- ECAP_ISR_SOURCE_COUNTER_COMPARE
: 计数器等于比较生成中断
参数说明:
- 输入参数:
-
base
: ECAP模块的基地址。 -
输出参数:
- 返回值: 布尔值,指示全局中断状态(true 表示中断已发生)。
11.函数名: ECAP_clearGlobalInterrupt(uint32_t base, uint16_t intFlags)
函数说明:
该函数用于清除eCAP模块的全局中断标志。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 无返回值
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过写入
ECCLR
寄存器中的INT位来清除全局中断标志。
12.函数名: ECAP_forceInterrupt(uint32_t base, uint16_t intFlags)
函数说明:
该函数用于强制激活并启用eCAP中断源。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。uint16_t intFlags
: 要激活的中断源。
输出参数:
- 无返回值
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过
ECFRC
寄存器写入指定的中断源标志以强制激活这些中断。
13.函数名: ECAP_enableCaptureMode(uint32_t base)
函数说明:
该函数将eCAP模块设置为捕获模式。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 无返回值
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过清除
ECCTL2
寄存器中的CAP/APWM
位,设置eCAP模块为捕获模式。
14.函数名: ECAP_enableAPWMMode(uint32_t base)
函数说明:
该函数将eCAP模块设置为APWM(自动脉宽调制)模式。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。
输出参数:
- 无返回
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过设置
ECCTL2
寄存器中的CAP/APWM
位,将eCAP模块配置为APWM模式。
15.函数名: ECAP_enableCounterResetOnEvent(uint32_t base, ECAP_Events event)
函数说明:
该函数在捕获事件发生时启用计数器(TSCTR)重置。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。ECAP_Events event
: 触发计数器重置的事件编号,范围为ECAP_EVENT_1
到ECAP_EVENT_4
。
输出参数:
- 无返回值。
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过设置
ECCTL1
寄存器中的相应位来启用计数器在捕获事件发生时的重置。
16.函数名: ECAP_disableCounterResetOnEvent(uint32_t base, ECAP_Events event)
函数说明:
该函数禁用计数器(TSCTR)在捕获事件发生时的重置功能。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。ECAP_Events event
: 触发计数器重置的事件编号,范围为ECAP_EVENT_1
到ECAP_EVENT_4
。
输出参数:
- 无返回值
备注:
- 函数首先通过
ECAP_isBaseValid
宏验证传入的eCAP基地址的有效性。 - 然后,通过清除
ECCTL1
寄存器中的相应位来禁用计数器在捕获事件发生时的重置功能。
17.函数名: ECAP_enableTimeStampCapture(uint32_t base)
函数说明:
该函数用于启用时间戳捕获功能。函数首先验证传入的eCAP基地址是否有效,接着通过设置ECCTL1
寄存器中的CAPLDEN
位来启用时间戳计数的捕获。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
18.函数名: ECAP_disableTimeStampCapture(uint32_t base)
函数说明:
该函数用于禁用时间戳捕获功能。函数首先验证传入的eCAP基地址是否有效,接着通过清除ECCTL1
寄存器中的CAPLDEN
位来禁用时间戳计数的捕获。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
19.函数名: ECAP_setPhaseShiftCount(uint32_t base, uint32_t shiftCount)
函数说明:
该函数用于设置相位移值计数。函数首先验证传入的eCAP基地址是否有效,然后将相位移值写入主时间戳计数器。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
uint32_t shiftCount
: 相位移值。 -
输出参数:
- 无返回值。
20.函数名: ECAP_enableLoadCounter(uint32_t base)
函数说明:
该函数用于启用计数器加载相位移值。函数首先验证传入的eCAP基地址是否有效,然后通过设置ECCTL2
寄存器中的SYNCI_EN
位来启用计数器加载。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
21.函数名: ECAP_disableLoadCounter(uint32_t base)
函数说明:
该函数用于禁用计数器加载相位移值。函数首先验证传入的eCAP基地址是否有效,然后通过清除ECCTL2
寄存器中的SYNCI_EN
位来禁用计数器加载。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
22.函数名: ECAP_loadCounter(uint32_t base)
函数说明:
该函数用于将相位移计数器寄存器中的值加载到时间戳计数器寄存器。调用此函数前,确保已通过调用ECAP_enableLoadCounter()
函数启用时间戳计数器的加载。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
23.函数名: ECAP_setSyncOutMode(uint32_t base, ECAP_SyncOutMode mode)
函数说明:
该函数用于配置同步输出信号模式。有效的模式参数包括:
- ECAP_SYNC_OUT_SYNCI
- 在同步输入事件上触发同步输出。
- ECAP_SYNC_OUT_COUNTER_PRD
- 当计数器等于周期时触发同步输出。
- ECAP_SYNC_OUT_DISABLED
- 禁用同步输出。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_SyncOutMode mode
: 同步输出模式。 -
输出参数:
- 无返回值。
24.函数名: ECAP_stopCounter(uint32_t base)
函数说明:
该函数用于停止时间戳计数器。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
25.函数名: ECAP_startCounter(uint32_t base)
函数说明:
该函数用于启动时间戳计数器。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
26.函数名: ECAP_setAPWMPolarity(uint32_t base, ECAP_APWMPolarity polarity)
函数说明:
该函数设置eCAP在APWM模式下的极性。有效的极性输入包括:
- ECAP_APWM_ACTIVE_HIGH
- 表示高电平有效。
- ECAP_APWM_ACTIVE_LOW
- 表示低电平有效。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_APWMPolarity polarity
: APWM的极性。 -
输出参数:
- 无返回值。
27.函数名: ECAP_setAPWMPeriod(uint32_t base, uint32_t periodCount)
函数说明:
该函数设置APWM波形的周期计数。periodCount
是写入寄存器的实际计数,用户需将所需的频率或时间转换为周期计数。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
uint32_t periodCount
: APWM的周期计数。 -
输出参数:
- 无返回值。
28.函数名: ECAP_setAPWMCompare(uint32_t base, uint32_t compareCount)
函数说明:
该函数设置APWM波形的开关时间计数,具体取决于输出的极性。compareCount
是写入寄存器的实际计数,用户需将所需的频率或时间转换为相应的计数值。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
uint32_t compareCount
: APWM的开关时间计数。 -
输出参数:
- 无返回值。
29.函数名: ECAP_setAPWMShadowPeriod(uint32_t base, uint32_t periodCount)
函数说明:
该函数设置APWM波形的阴影周期计数。periodCount
是写入寄存器的实际计数,用户需将所需的频率或时间转换为周期计数。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
uint32_t periodCount
: APWM的阴影周期计数。 -
输出参数:
- 无返回值。
30.函数名: ECAP_setAPWMShadowCompare(uint32_t base, uint32_t compareCount)
函数说明:
该函数设置APWM波形的阴影开关时间计数,具体取决于输出的极性。compareCount
是写入寄存器的实际计数,用户需将所需的频率或时间转换为相应的计数值。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
uint32_t compareCount
: APWM的阴影开关时间计数。 -
输出参数:
- 无返回值。
31.函数名: ECAP_getTimeBaseCounter(uint32_t base)
函数说明:
该函数返回时间基准计数器的值。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 返回时间基准计数器的值。
32.函数名: ECAP_getEventTimeStamp(uint32_t base, ECAP_Events event)
函数说明:
该函数返回给定事件的当前时间戳计数。有效的事件值为 ECAP_EVENT_1
到 ECAP_EVENT_4
。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_Events event
: 事件编号。 -
输出参数:
- 返回事件时间戳值,如果事件无效则返回0。
33.函数名: ECAP_selectECAPInput(uint32_t base, ECAP_InputCaptureSignals input)
函数说明:
该函数选择eCAP输入信号。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_InputCaptureSignals input
: eCAP输入信号。 -
输出参数:
- 无返回值。
34.函数名: ECAP_resetCounters(uint32_t base)
函数说明:
该函数重置主计数器(TSCTR寄存器)、事件滤波器、模数计数器、捕获事件和计数器溢出标志。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 无返回值。
35.函数名: ECAP_setDMASource(uint32_t base, ECAP_Events event)
函数说明:
该函数设置DMA的eCAP事件源。有效的事件值为 ECAP_EVENT_1
到 ECAP_EVENT_4
。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_Events event
: eCAP事件。 -
输出参数:
- 无返回值。
36.函数名: ECAP_getModuloCounterStatus(uint32_t base)
函数说明:
该函数返回模数计数器状态,指示下一个捕获事件将加载哪个寄存器。
参数说明:
- 输入参数:
-
uint32_t base
: eCAP模块的基地址。 -
输出参数:
- 返回一个
ECAP_EVENT_n
值,指示CAPn是下一个事件加载的寄存器。
37.函数名: ECAP_setEmulationMode(uint32_t base, ECAP_EmulationMode mode)
函数说明:
该函数配置eCAP计数器(TSCTR)在仿真暂停时所需的仿真模式。有效的模式包括:
- ECAP_EMULATION_STOP
- 计数器立即停止。
- ECAP_EMULATION_RUN_TO_ZERO
- 计数器运行直至达到0。
- ECAP_EMULATION_FREE_RUN
- 计数器不受影响。
参数说明:
- 输入参数:
uint32_t base
: eCAP模块的基地址。-
ECAP_EmulationMode mode
: 仿真模式。 -
输出参数:
- 无返回值。