stm32g030 ll库初始化time1+pwm pwm频率配置为10khz 并在main函数的主循环中输出占空比20方波和50占空比的方波
以下是使用STM32CubeIDE的LL库初始化TIM1+PWM并输出方波的示例代码:
#include "main.h"
#include "stm32g0xx_ll_bus.h"
#include "stm32g0xx_ll_gpio.h"
#include "stm32g0xx_ll_tim.h"
int main(void)
{
/* Enable GPIOA clock */
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
/* Configure PA8 as alternate function mode */
LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_8, LL_GPIO_MODE_ALTERNATE);
LL_GPIO_SetAFPin_8_15(GPIOA, LL_GPIO_PIN_8, LL_GPIO_AF_2);
/* Enable TIM1 clock */
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM1);
/* Configure TIM1 for PWM mode */
LL_TIM_InitTypeDef tim_init_struct;
LL_TIM_StructInit(&tim_init_struct);
tim_init_struct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
tim_init_struct.CounterMode = LL_TIM_COUNTERMODE_UP;
tim_init_struct.Autoreload = 999;
tim_init_struct.Prescaler = 7;
LL_TIM_Init(TIM1, &tim_init_struct);
LL_TIM_OC_InitTypeDef tim_oc_init_struct;
LL_TIM_OC_StructInit(&tim_oc_init_struct);
tim_oc_init_struct.OCMode = LL_TIM_OCMODE_PWM1;
tim_oc_init_struct.OCState = LL_TIM_OCSTATE_ENABLE;
tim_oc_init_struct.OCPolarity = LL_TIM_OCPOLARITY_HIGH;
tim_oc_init_struct.CompareValue = 200;
LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH1, &tim_oc_init_struct);
/* Enable TIM1 output */
LL_TIM_EnableAllOutputs(TIM1);
/* Start TIM1 */
LL_TIM_EnableCounter(TIM1);
while (1)
{
/* Output 20% duty cycle square wave */
LL_TIM_OC_SetCompareCH1(TIM1, 200);
LL_mDelay(500);
LL_TIM_OC_SetCompareCH1(TIM1, 500);
LL_mDelay(500);
}
}
上述代码中,我们首先启用GPIOA和TIM1的时钟,并将PA8配置为TIM1的通道1的替代功能模式。然后,我们使用LL_TIM_InitTypeDef结构体初始化TIM1,并使用LL_TIM_OC_InitTypeDef结构体初始化TIM1的通道1,以使其工作在PWM模式下。我们在此设置PWM频率为10 kHz(1000除以(999 + 1)乘以(7 + 1)等于10 kHz)。最后,我们在主循环中输出20%占空比和50%占空比的方波。
注意:本示例代码仅适用于STM32G030微控制器。如果您使用的是其他型号的STM32微控制器,则需要进行相应的修改
原文地址: https://www.cveoy.top/t/topic/gf1C 著作权归作者所有。请勿转载和采集!