TIM_ARRPreloadConfig和TIM_CCPreloadControl

  1. TIM_ARRPreloadConfig(TIM2, ENABLE); - 这个函数允许自动重装载寄存器 ARR 的预装载。在定时器更新事件发生时,允许自动重装载寄存器 ARR 的新值被加载,而不是立即加载。通常,这样做可以确保在更新事件发生时,新的 ARR 值被正确加载,从而影响下一次计数周期。

    举个例子,假设你想要定时器每隔一秒触发一次更新事件。你可以设置 ARR 寄存器的值为定时器时钟频率减去 1,然后通过启用预装载,确保在更新事件中将 ARR 的新值加载,从而实现每秒触发一次更新。

  2. TIM_CCPreloadControl(TIM2, ENABLE); - 这个函数允许捕获/比较通道的预装载寄存器。在定时器更新事件发生时,允许捕获/比较通道的 CCR(捕获/比较寄存器)的新值被加载,而不是立即加载。

    举个例子,如果你使用了比较模式,即希望在某个 CCR 值达到时触发事件,启用预装载可以确保在更新事件中将 CCR 的新值加载,而不会导致在计数过程中的突变。这对于避免计数过程中的不稳定情况是很有用的。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是用来初始化STM32单片机中的TIM2定时器的。具体注释如下: ```c void Drv_TIM2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //声明一个包含TIM2定时器初始化参数的结构体变量 /* TIM2 Clock Enable */ RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM2, ENABLE); //开启TIM2定时器的时钟 /* Configure TIM2 */ TIM_TimeBaseStructure.TIM_Period = 0x000FFFFF; //设置计数器自动重装载值,即计数器计数到这个值后会自动清零 TIM_TimeBaseStructure.TIM_Prescaler = 0; //设置预分频系数,这里设为0表示不预分频 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割系数,这里设为TIM_CKD_DIV1表示不分割 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器的工作模式,这里设为向上计数 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据上述参数初始化TIM2定时器 TIM_ARRPreloadConfig(TIM2, DISABLE); //禁止TIM2定时器自动重载值的缓存 TIM_UpdateDisableConfig(TIM2, DISABLE); //使TIM2定时器下一个更新事件的产生不会禁止计数器的计数 TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular); //设置TIM2定时器下一个更新事件的产生来源为计数器向上计数到自动重装载值 /* Clear Update flag */ TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除TIM2定时器的更新标志位 /* Reset cnt */ TIM_SetCounter(TIM2, 0); //将TIM2定时器的计数器清零 /* Enable TIM2 */ TIM_Cmd(TIM2, ENABLE); //使能TIM2定时器 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值