手册
在输入捕获模式下,当检测到 ICi 信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(PWMA_CCRx)中。当发生捕获事件时,相应的 CCiIF 标志(PWMA_SR 寄存器)被置 1。
如果 PWMA_IER 寄存器的 CCiIE 位被置位,也就是使能了中断,则将产生中断请求。如果发生捕获
事件时 CCiIF 标志已经为高,那么重复捕获标志 CCiOF(PWMA_SR2 寄存器)被置 1。写 CCiIF=0 或
读取存储在 PWMA_CCRiL 寄存器中的捕获数据都可清除 CCiIF。写 CCiOF=0 可清除 CCiOF。
PWM 输入信号上升沿时捕获
以下例子说明如何在 TI1 输入的上升沿时捕获计数器的值到 PWMA_CCR1 寄存器中,步骤如下:
- 选择有效输入端:例如 PWMA_CCR1 连接到 TI1 输入,所以写入 PWMA_CCR1 寄存器中的CC1S=01,此时通道被配置为输入,并且 PWMA_CCR1 寄存器变为只读。
- 根据输入信号 TIi 的特点,==可通过配置 PWMA_CCMRi 寄存器中的 ICiF 位来设置相应的输入滤波器的滤波时间。==假设输入信号在最多 5 个时钟周期的时间内抖动,我们须配置滤波器的带宽长于 5个时钟周期;因此我们可以连续采样 8 次,以确认在 TI1 上一次真实的边沿变换, 即在 TIMi_CCMR1寄存器中写入 IC1F=0011,此时,只有连续采样到 8 个相同的 TI1 信号,信号才为有效(采样频率为 fMASTER)。
- 选择 TI1 通道的有效转换边沿,在 PWMA_CCER1 寄存器中写入 CC1P=0(上升沿)。
- 配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止(写 PWMA_CCMR1 寄存器的 IC1PS=00)。
- 设置 PWMA_CCER1 寄存器的 CC1E=1,允许捕获计数器的值到捕获寄存器中。
- 如果需要,通过设置 PWMA_IER 寄存器中的 CC1IE 位允许相关中断请求。
当发生一个输入捕获时:
当产生有效的电平转换时,计数器的值被传送到 PWMA_CCR1 寄存器。
CC1IF 标志被设置。当发生至少 2 个连续的捕获时,而 CC1IF 未曾被清除时,CC1OF 也被置 1。
如设置了 CC1IE 位,则会产生一个中断。
为了处理捕获溢出事件(CC1OF 位),建议在读出重复捕获标志之前读取数据,这是为了避免丢失在读出捕获溢出标志之后和读取数据之前可能产生的重复捕获信息。
注意:设置 PWMA_EGR 寄存器中相应的 CCiG 位,可以通过软件产生输入捕获中断。
PWM 输入信号测量
该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:
两个 ICi 信号被映射至同一个 TIi 输入。
这两个 ICi 信号的有效边沿的极性相反。
其中一个 TIiFP 信号被作为触发输入信号,而触发模式控制器被配置成复位触发模式。
程序
void PWM_INIT(void)
{
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01; //CC1 为输入模式,且映射到 TI1FP1 上
PWMA_CCMR2 = 0x02; //CC2 为输入模式,且映射到 TI1FP2 上
PWMA_CCER1 = 0x11; //使能 CC1 上的捕获功能,使能 CC2 上的捕获功能
PWMA_CCER1 |= 0x00; //设置捕获极性为 CC1 的上升沿
PWMA_CCER1 |= 0x20; //设置捕获极性为 CC2 的下降沿
PWMA_CCER2 = 0x00;
PWMA_CCMR3 = 0x01; //CC3 为输入模式,且映射到 TI3FP3 上
PWMA_CCMR4 = 0x02; //CC4 为输入模式,且映射到 TI3FP4 上
PWMA_CCER2 = 0x11; //使能 CC3 上的捕获功能,使能 CC4 上的捕获功能
PWMA_CCER2 |= 0x00; //设置捕获极性为 CC3 的上升沿
PWMA_CCER2 |= 0x20; //设置捕获极性为 CC4 的下降沿
PWMA_CR1 = 0x01;
PWMA_IER = 0x1e; //使能 CC1/CC2/CC3/CC4 捕获中断
PWMB_CCER1 = 0x00;
PWMB_CCMR1 = 0x01; //CC5 为输入模式,且映射到 TI5FP5 上
PWMB_CCMR2 = 0x02; //CC6 为输入模式,且映射到 TI5FP6 上
PWMB_CCER1 = 0x11; //使能 CC5 上的捕获功能,使能 CC6 上的捕获功能
PWMB_CCER1 |= 0x00; //设置捕获极性为 CC5 的上升沿
PWMB_CCER1 |= 0x20; //设置捕获极性为 CC6 的下降沿
PWMB_CCER2 &#