为什么计数器的自动重装值为0xFFFF,会使得计数频率为1MHz?
时间: 2024-04-12 15:33:22 浏览: 210
计数器的自动重装值为0xFFFF时,意味着计数器在计满65535个时钟周期后会重新从0开始计数。假设计数器的时钟频率为1MHz(即每秒钟产生1000000个时钟信号),那么当计数器每计满65535个时钟周期后,经过的时间就是65535 / 1000000 秒,约等于0.065535秒。换算成频率,就是1 / 0.065535 ≈ 15.259 kHz。
由于计数器的重装值为0xFFFF,所以每隔0.065535秒(或15.259 kHz),计数器就会重新计数,即产生一个脉冲。根据时钟频率与脉冲频率的关系,我们可以推导出计数器的时钟频率为1 MHz。
相关问题
修改程序,将TIM2设为高优先级,TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // 预分频器 TIM_TimeBaseStructure.TIM_Period = 0xffff; //设定计数器自动重装值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//选择时钟分频:不分频 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
您可以使用以下代码将TIM2设置为高优先级:
```
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级为0,最高优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //设置子优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // 预分频器
TIM_TimeBaseStructure.TIM_Period = 0xffff; //设定计数器自动重装值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//选择时钟分频:不分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能更新中断
```
其中,前面的部分是将TIM2设置为高优先级的代码,后面的部分是配置TIM2定时器的代码。在配置中,将TIM2的抢占优先级设置为0,这样可以确保TIM2中断在系统中的优先级最高。同时,将TIM2的更新中断使能,并清除中断标志位,以防止出现误触发。
解释这行代码:TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数
这行代码是用来初始化定时器TIM5的输入捕获模式,并设置计数器的自动重装值和时钟预分频器。
具体解释如下:
- TIM5_Cap_Init 是一个函数,用于初始化定时器TIM5的输入捕获模式。
- (0XFFFF, 72-1) 是函数的参数,其中0XFFFF表示计数器的自动重装值,72-1表示时钟预分频器的值。
计数器的自动重装值为0XFFFF,意味着当计数器计满65535个时钟周期后会重新从0开始计数。
时钟预分频器的值为72-1,表示时钟信号的频率将被分频为72分之一。假设输入给定的时钟频率为1 MHz(即每秒钟产生1000000个时钟信号),经过预分频后,最终计数器的时钟频率将成为1 MHz / 72 ≈ 13.888 kHz。
因此,这行代码的作用是将定时器TIM5配置为以1 MHz 的频率计数,并且当计数器计满65535个时钟周期后重新开始计数。
阅读全文
相关推荐














