1> 实验目的
通过F407定时器2PWM输入功能,计算出上图波形频率与占空比;
2> 理论基础
使用定时器2 的2个通道,通道1捕获上升沿,通道2捕获下降沿;
读取通道1的【捕获/比较寄存器】值,计算出频率;
读取通道2的【捕获/比较寄存器】值,计算出占空比;
3> 硬件电路
4> 程序设计
4.1> Tim2初始化
使能中断:
4.2> 从模式:复位模式
4.3> 输入捕获
/* Part 1> 启动PWM输入捕获 */
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); // 通道1;
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2); // 通道2;
/* part 2> 中断处理 */
void TIM2_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim2);
}
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
num_clk = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
printf("CH1: num_clk = %d\n\r", num_clk);
}
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) {
num_clk = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
printf("CH2: num_clk = %d\n\r", num_clk);
}
}
// 最简模型,核心代码...