请问stm32f103如何用定时计数器TIM2计算外部幅值为5V的方波的频率
时间: 2023-06-26 18:09:25 浏览: 52
可以按照以下步骤进行设置:
1. 配置TIM2为输入捕获模式,选择TI2作为输入信号源。
```c
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; // 上升沿捕获
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; // 直接映射到TI2上
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; // 无预分频
TIM_ICInitStructure.TIM_ICFilter = 0x0; // 不滤波
TIM_ICInit(TIM2, &TIM_ICInitStructure);
```
2. 配置TIM2的时基,使其定时器溢出周期为1ms。
```c
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 1000 - 1; // 定时器溢出周期为1ms
TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock / 1000000 - 1; // 定时器时钟为1MHz,分频系数为1MHz/1=1
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
```
3. 启动TIM2定时器和外部输入捕获功能。
```c
TIM_Cmd(TIM2, ENABLE);
TIM_ITConfig(TIM2, TIM_IT_Update | TIM_IT_CC2, ENABLE);
```
4. 实现TIM2的更新中断和捕获中断处理函数。
```c
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
// 定时器溢出中断处理
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
{
// 捕获中断处理
static uint32_t last_capture = 0;
uint32_t capture = TIM_GetCapture2(TIM2);
uint32_t period = capture - last_capture;
last_capture = capture;
float frequency = 1000000.0f / period; // 计算频率
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
}
}
```
以上代码实现了通过TIM2定时器捕获外部幅值为5V的方波的频率。需要注意的是,TIM2的时钟频率应该足够高以避免测量误差,建议使用72MHz的系统时钟。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)