如题,本人欲使用STM32F407ZGT的定时器TIM14输出PWM信号到PG11,PG12,PG13,PG14四个引脚,四个引脚分别连接2片L298N驱动芯片各自的的ENA,ENB端口,来控制4个直流电机转速(四个电机转速相同)。以下为对应寄存器设置代码,代码中同时将LED0的端口PF9进行了复用设置,使硬件在运行时可以直接观测到PWM的信号。
代码烧录到实体硬件后,发现LED可以按照频率闪动,但直流电机不转,使用万用表检测PG11,PG12,PG13,PG14四个引脚后,发现其无电压值输出,想问一下是定时器的设置问题还是GPIO口的设置问题,PG6,PG7在电路中设置为了输入引脚,是否会造成影响?
如果有好心人知道问题出在哪里,希望能告诉我解决方法,本人使用的是寄存器版本的开发指南,HAL和库函数版本的操作不太熟悉,所以希望能给出操作寄存器的解决方法,谢谢。
void TIM14_PWM_Init(u32 arr,u32 psc)
{
RCC->APB1ENR|=1<<8; //打开TIM14
RCC->AHB1ENR|=1<<6;//PORTG
GPIO_Set(GPIOG,PIN14|PIN13|PIN12|PIN11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//复用设置,
GPIO_AF_Set(GPIOG,11,9);
GPIO_AF_Set(GPIOG,12,9);
GPIO_AF_Set(GPIOG,13,9);
GPIO_AF_Set(GPIOG,14,9);
GPIO_Set(GPIOF,PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOF,9,9);
TIM14->ARR=arr;
TIM14->PSC=psc;
TIM14->CCMR1|=6<<4; //开CH1,设置为PWM1
TIM14->CCMR1|=1<<3;
TIM14->CCER|=1<<0;
//TIM14->CCER|=1<<1;
TIM14->CR1|=1<<7;
TIM14->CR1|=1<<0;
}
|