本次试验使用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