Proceso de trabajo STM32 PWM
Tome el canal 1 como ejemplo:
CCR1: Capturar registro de comparación (valor) (x=1,2,3,4): Establecer valor de comparación.
CCMR1: bits OC1M[2:0]:
Para el modo PWM, se utiliza para configurar el modo PWM 1 [110] o el modo PWM 2 [111].
CCER: Bit CC1P: entrada/captura 1 polaridad de salida. 0: el nivel alto es válido, 1: el nivel bajo es válido.
CCER: Bit CC1E: habilitación de entrada/captura 1 salida. 0: apagado, 1: encendido.
Modo PWM 1 y Modo PWM 2
void TIM_OC2PreloadConfig( TIM_TypeDef * TIMx , uint16_t TIM_OCPreload );
void TIM_ARRPreloadConfig ( TIM_TypeDef * TIMx , FunctionalState NewState );
Temporizador STM32 pin de 3 canales de salida
Función de biblioteca de salida PWM
anular TIM_OCxInit ( TIM_TypeDef * TIMx , TIM_OCInitTypeDef * TIM_OCInitStruct );
Establezca la función de valor de comparación:
void TIM_SetCompareX ( TIM_TypeDef * TIMx , uint16_t Compare2);
Habilite la precarga de comparación de salida:
void TIM_OC2PreloadConfig( TIM_TypeDef * TIMx , uint16_t TIM_OCPreload );
Bit de habilitación del registro de precarga para habilitar la recarga automática:
void TIM_ARRPreloadConfig ( TIM_TypeDef * TIMx , FunctionalState NewState );
Experimento de salida PWM:
Utilice la función PWM del temporizador 3 para generar una onda PWM con un ciclo de trabajo variable para controlar la luz LED, de modo que el brillo del LED [PB5] cambie de oscuro a brillante, y luego de brillante a oscuro, y así sucesivamente.
Pasos de configuración de salida PWM:
Habilitar el reloj del temporizador 3: RCC_APB1PeriphClockCmd();
Habilitar reloj GPIOB: RCC_APB2PeriphClockCmd();
②Inicialice el puerto IO como salida de función multiplex. Función: GPIO_Init ();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
③Aquí vamos a usar PB5 como pin de salida PWM del temporizador, por lo que necesitamos reasignar la configuración.
Entonces necesitas encender el reloj AFIO. También configure la reasignación.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig (GPIO_PartialRemap_TIM3, HABILITAR);
④Temporizador de inicialización : ARR, PSC, etc.: TIM_TimeBaseInit ();
⑤Inicializar parámetros de comparación de salida: TIM_OC2Init();
⑥Habilitar registro de precarga: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable );
⑦Habilite el temporizador. TIM_Cmd ();
⑧Cambie continuamente el valor de comparación CCRx para lograr diferentes efectos del ciclo de trabajo: TIM_SetCompare2();
Código importante:
temporizador.c:
C Principal:
Después de descargar el programa, la luz roja cambia de oscuro a brillante y de brillante a oscuro.
Resumir
Solo se puede decir que tengo una comprensión aproximada de los principios relevantes y el uso básico de PWM. La salida PWM se usará a menudo en la etapa posterior, por lo que espero volver y reorganizar el contenido de esta parte después de aprender contenido posterior!