我利用TIM2定时器,输出可变频率和占空比的pwm波,利用这些波进行数据的发送
[mw_shl_code=c,true]void PWM_Send(int arr, int duty_circle)
{
TIM_OC_InitTypeDef OCConfig;
//GPIO_InitTypeDef GPIO_InitStructure;
//TIM2
Tim2Handle.Instance = TIM2;
Tim2Handle.Init.Prescaler = 4 - 1; //计数器频率被分频为15MHz
Tim2Handle.Init.Period = arr;
Tim2Handle.Init.ClockDivision = 0;
Tim2Handle.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Init(&Tim2Handle);
OCConfig.OCMode = TIM_OCMODE_PWM1;
OCConfig.OCPolarity = TIM_OCPOLARITY_HIGH;
OCConfig.OCFastMode = TIM_OCFAST_DISABLE;
OCConfig.OCIdleState = TIM_OCIDLESTATE_RESET;
OCConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
OCConfig.Pulse = (uint32_t)(arr+1)*(duty_circle-1)/duty_circle;
HAL_TIM_PWM_ConfigChannel(&Tim2Handle, &OCConfig, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&Tim2Handle, TIM_CHANNEL_2);
}[/mw_shl_code]
|