Gd32定时器运行过程中,修改计数值源码
时间: 2024-03-22 22:41:46 浏览: 22
在GD32定时器运行时修改计数值的源码示例:
```c
// 定义定时器结构体
typedef struct
{
__IO uint16_t CTLR1; // 控制寄存器1
__IO uint16_t CTLR2; // 控制寄存器2
__IO uint16_t SMCFG; // 从模式配置寄存器
__IO uint16_t DMAINTEN; // DMA/中断使能寄存器
__IO uint16_t INTF; // 中断标志寄存器
__IO uint32_t CNT; // 计数器
__IO uint16_t PSC; // 预分频器
__IO uint16_t CAR; // 自动重装载寄存器
} TIMER_TypeDef;
// 定义定时器指针
#define TIMER ((TIMER_TypeDef *) TIMER_BASE)
// 修改计数器值
void modify_timer_cnt(uint32_t new_value)
{
// 关闭定时器
TIMER->CTLR1 &= ~TIMER_CTLR1_CEN;
// 修改计数器值
TIMER->CNT = new_value;
// 重启定时器
TIMER->CTLR1 |= TIMER_CTLR1_CEN;
}
```
在上面的示例中,我们先关闭定时器,然后修改计数器的值,最后重新启动定时器。注意,在修改计数器值时,需要确保计数器的值不会超出自动重载寄存器的值,否则定时器会立即重新启动。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)