暂不讨论捕获功能,简化下面的描述方便阅读理解。
--------------------------------------------------------------------------------
13.4.14 TIM1 比较寄存器 1(TIMx_CCR1)
CCR1[15:0]: 比较通道1的值 (Compare 1 value)
若CC1 通道配置为输出:CCR1包含了装入比较1寄存器的值(预装载值)。
void TIM_SetCompare1(TIM_TypeDef* TIMx, u16 Compare1)
{/* Check the parameters */assert_param(IS_TIM_123458_PERIPH(TIMx));/* Set the Capture Compare1 Register value */TIMx->CCR1 = Compare1;
}
如果在TIMx_CCMR1寄存器(OC1PE位)中未选择预装载功能,写入的数值会立即传输至当前寄存器中。
否则只有当更新事件()发生时,此预装载值才传输至当前比较1寄存器中。
当前比较寄存器参与同计数器TIMx_CNT的比较,并在OC1端口上产生输出信号。
--------------------------------------------------------------------------------
13.4.10 TIM1 和TIM8 计数器(TIMx_CNT)
CNT[15:0]:计数器的值 (Counter value)
TIMx->CNT 是定时器配置好分频、ARR之后自动按节拍加减的数值。
--------------------------------------------------------------------------------
13.4.12 TIM1 和TIM8 自动重装载寄存器(TIMx_ARR)
自动重装载的值 (Prescaler value) 位15:0
ARR包含了将要装载入实际的自动重装载寄存器的值。
详细参考13.3.1节:有关ARR的更新和动作。当自动重装载的值为空时,计数器不工作。
void TIM_SetAutoreload(TIM_TypeDef* TIMx, u16 Autoreload)
{/* Check the parameters */assert_param(IS_TIM_ALL_PERIPH(TIMx));/* Set the Autoreload Register value */TIMx->ARR = Autoreload;
}
--------------------------------------------------------------------------------
STM32 输出方波的方法有两种比较类似的,一个是PWM模式,一个是输出比较模式。下面来看看这两种模式的不同处在哪。
CCMRx寄存器
OCxM=000输出保持电平
OCxM=001输出有效电平
OCxM=010输出无效电平
OCxM=011输出翻转电平
CCER寄存器
CCxP位