本帖最后由 皓月光兮非自明 于 2023-8-14 21:17 编辑
四、程序开发-->2、PWM输出
此次我们主要关注定时器输出PWM波形,首先对IO口进行配置
void GPIO_Configuration(void)
{
//PWM
CW_GPIOA->ANALOG &= ~GPIOx_ANALOG_PIN6_Msk;
CW_GPIOA->AFRL_f.AFR6=6;
CW_GPIOA->DIR &= ~GPIOx_DIR_PIN6_Msk;
}
随后根据参考手册对通用定时器GTIM1进行配置
图1 PWM功能配置
void GTIM1_Configuration(void)
{
GTIM_InitTypeDef GTIM_InitStruct = {0};
// APB1_CLK = 16MHz
GTIM_InitStruct.Mode = GTIM_MODE_TIME;
GTIM_InitStruct.OneShotMode = GTIM_COUNT_CONTINUE;
GTIM_InitStruct.Prescaler = GTIM_PRESCALER_DIV1;
GTIM_InitStruct.ReloadValue = 7;
GTIM_InitStruct.ToggleOutState = DISABLE;
GTIM_TimeBaseInit(CW_GTIM1, >IM_InitStruct);
GTIM_OCInit(CW_GTIM1, GTIM_CHANNEL1, GTIM_OC_OUTPUT_PWM_LOW);
GTIM_SetCompare1(CW_GTIM1, (GTIM_InitStruct.ReloadValue + 1) * 0.1);
GTIM_Cmd(CW_GTIM1, ENABLE);
}
根据经典的分频公式
F=f÷((pcs+1)*(add+1))
在PA05引脚获得如下频率以及不同占空比的PWM方波
图2 PWM:20kHz,50%
图3 PWM:20kHz,90%
图4 PWM:20kHz,20%
图5 PWM:40kHz,50%
图6 PWM:50kHz,50%
图7 PWM:1MHz,50%
图8 PWM:2MHz,50%
图9 PWM:2MHz,10%
经过测定,通过评估板GTIM1设置的PWM输出波形正常,MHz以下时上升下降沿均约在50ns左右,MHz以上上升下降沿约为80ns左右(鉴于受布线影响,实际输出质量应 > 本实验数据)