TIM_AUTORELOAD_PRELOAD_ENABLE和TIM_AUTORELOAD_PRELOAD_DISABLE区别
时间: 2023-11-22 13:06:13 浏览: 131
TIM_AUTORELOAD_PRELOAD_ENABLE和TIM_AUTORELOAD_PRELOAD_DISABLE是STM32定时器自动重装载寄存器预装载使能和禁止的宏定义。预装载使能后,当定时器计数器向上溢出或向下溢出时,自动重装载寄存器的值会被缓存到影子寄存器中,直到下一次更新事件发生时才会被更新到自动重装载寄存器中。而预装载禁止后,自动重装载寄存器的值会立即被更新到自动重装载寄存器中。
在使用定时器时,如果需要在定时器计数器向上溢出或向下溢出时立即更新自动重装载寄存器的值,可以选择禁止预装载。如果需要在定时器计数器向上溢出或向下溢出时不立即更新自动重装载寄存器的值,可以选择使能预装载。
示例代码如下:
```c
// 使能预装载
TIM_MasterConfigTypeDef sMasterConfig = {0};
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
sMasterConfig.MasterMode = TIM_TRGO_ENABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig);
__HAL_TIM_ENABLE_IT(&htim6, TIM_IT_UPDATE);
__HAL_TIM_SET_AUTORELOAD(&htim6, 9999);
__HAL_TIM_SET_PRESCALER(&htim6, 71);
__HAL_TIM_ENABLE(&htim6);
__HAL_TIM_ENABLE_DMA(&htim6, TIM_DMA_UPDATE);
// 禁止预装载
TIM_MasterConfigTypeDef sMasterConfig = {0};
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
sMasterConfig.MasterMode = TIM_TRGO_ENABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig);
__HAL_TIM_ENABLE_IT(&htim6, TIM_IT_UPDATE);
__HAL_TIM_SET_AUTORELOAD(&htim6, 9999);
__HAL_TIM_SET_PRESCALER(&htim6, 71);
__HAL_TIM_DISABLE_PRELOAD(&htim6);
__HAL_TIM_ENABLE(&htim6);
__HAL_TIM_ENABLE_DMA(&htim6, TIM_DMA_UPDATE);
```