#include "tim4.h"
void TIM4_Init(void)
{
// 开启时钟
RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // 使用 TIM4 的 GPIOB 时钟
// 配置 PB6 为浮空输入 CNF 01 MODE 00
GPIOB->CRL &= ~GPIO_CRL_MODE6;
GPIOB->CRL &= ~GPIO_CRL_CNF6_1;
GPIOB->CRL |= GPIO_CRL_CNF6_0; // 浮空输入
// 定时器时基部分
// 预分频71
TIM4->PSC = 71;
// 自动重装载值 1000
TIM4->ARR = 65535; // 65535 是最大值,计数到这个值后会重装载
// 向上计数
TIM4->CR1 &= ~TIM_CR1_DIR;
// TI1输入选择直通
TIM4->CR2 &= ~TIM_CR2_TI1S;
// 输入滤波器
TIM4->CCMR1 &= ~TIM_CCMR1_IC1F; // 无滤波
// 配置边沿检测器极性上升沿触发
TIM4->CCER &= ~TIM_CCER_CC1P;
// 选择通道1的输入映射为TI1
TIM4->CCMR1 &= ~TIM_CCMR1_CC1S; // 清除 CC1S 位
TIM4->CCMR1 |= TIM_CCMR1_CC1S_0;
// 预分频器
TIM4->CCMR1 &= ~TIM_CCMR1_IC1PSC; // 无预分频
// 使能通道1输入
TIM4->CCER |= TIM_CCER_CC1E;
// 开启输入捕获中断使能
TIM4->DIER |= TIM_DIER_CC1IE;
//