本次试验使用STM32的输入捕获功能,测量PWM的频率。需要初始化的模块有PWM输出和输入捕获。
PWM模块初始化设置定时器3通道1,对应引脚为PC6,设置计数频率为(72M/72),自动重装载值为500。
即产生2Khz的PWM波
PWM波初始化
TIM3_CH1_PWM_Init(500-1,72-1); //2k,PC6;
TIM_SetCompare1(TIM3,250); //在main中初始化比较器值;
void TIM3_CH1_PWM_Init(u16 per,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* 开启时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/* 配置GPIO的模式和IO口 */
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//改变指定管脚的映射
TIM_TimeBaseInitStructure

该博客介绍了如何使用STM32的输入捕获功能来测量PWM波的频率。首先初始化PWM输出,设置定时器3产生2KHz的PWM波。然后配置定时器5的输入捕获功能,用于在上跳沿时记录计数器值,通过计算两次上跳沿之间的计数值来确定PWM周期。在中断处理程序中,捕获信息并判断是否成功捕获一个PWM周期。主程序根据捕获的数据计算频率。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



