输出比较模式
此功能用于控制输出波形,或指示已经过某一时间段。
当捕获/比较寄存器与计数器之间相匹配时,输出比较功能:
● 将为相应的输出引脚分配一个可编程值,该值由输出比较模式(TIMx_CCMRx 寄存器中的 OCxM⑦ 位)和输出极性(TIMx_CCER 寄存器中的 CCxP⑨ 位)定义。匹配时,输出引脚既可保持其电平 (OCxM=000)⑦,也可设置为有效电平 (OCxM=001)、无效电平(OCxM=010) 或进行翻转 (OCxM=011)。
● 将中断状态寄存器中的标志置 1(TIMx_SR 寄存器中的 CCxIF⑬ 位)。
● 如果相应中断使能位(TIMx_DIER 寄存器中的 CCXIE⑭ 位)置 1,将生成中断。
● 如果相应 DMA 使能位(TIMx_DIER 寄存器的 CCxDE⑮ 位,TIMx_CR2 寄存器的 CCDS⑯ 位,用来选择 DMA 请求)置 1,将发送 DMA 请求。
使用 TIMx_CCMRx 寄存器中的 OCxPE⑥ 位,可将 TIMx_CCRx 寄存器配置为带或不带预装载寄存器。
在输出比较模式下,更新事件 UEV⑰ 对 OCxREF⑧ 和 OCx⑩ 输出毫无影响。同步的精度可以达到计数器的一个计数周期。输出比较模式也可用于输出单脉冲(在单脉冲模式下)。
步骤:
1. 选择计数器时钟①(内部、外部、预分频器)。
2. 在 TIMx_ARR③ 和 TIMx_CCRx② 寄存器中写入所需数据。
3. 如果要生成中断请求,则需将 CCxIE⑭ 位置 1。
4. 选择输出模式。例如:
当 CNT 与 CCRx 匹配时,写入 OCxM⑦ = 011 以翻转 OCx⑩ 输出引脚
写入 OCxPE⑥ = 0 以禁止预装载寄存器
写入 CCxP⑨ = 0 以选择高电平有效极性
写入 CCxE⑫ = 1 以使能输出
5. 通过将 TIMx_CR1 寄存器中的 CEN⑱ 位置 1 来使能计数器。
可通过软件随时更新 TIMx_CCRx② 寄存器以控制输出波形,前提是未使能预加载寄存器(OCxPE⑥=“0”,否则仅当发生下一个更新事件 UEV⑰ 时,才会更新 TIMx_CCRx② 影子寄存器)。图 102 给出了一个示例。
----------------------------------------------------------------------------------------------------------------