初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2020-12-24
- 在线时间
- 12 小时
|
1金钱
本帖最后由 caixukun123 于 2022-5-11 11:27 编辑
单片机使用的f429
设置频率在10khz,占空比40%
附上程序
TIM_HandleTypeDef TIM3_PWM_Handler;
TIM_OC_InitTypeDef TIM3_PWM_OC_Init;
void TIM3_PWM_Init(void)
{
TIM3_PWM_Handler.Instance=TIM3;
TIM3_PWM_Handler.Init.Prescaler=90-1; //预分频系数
TIM3_PWM_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //计数模式
TIM3_PWM_Handler.Init.Period=100-1; //自动装载值
HAL_TIM_PWM_Init(&TIM3_PWM_Handler);
TIM3_PWM_OC_Init.OCMode=TIM_OCMODE_PWM1; //模式PWM1 OR PWM2,通道1在向上计数时小于为有效电平
TIM3_PWM_OC_Init.Pulse=40; //设置比较值CCRx
TIM3_PWM_OC_Init.OCPolarity=TIM_OCPOLARITY_HIGH; //输出比较极性,高电平为有效电平
HAL_TIM_PWM_ConfigChannel(&TIM3_PWM_Handler,&TIM3_PWM_OC_Init,TIM_CHANNEL_4);
HAL_TIM_PWM_Start(&TIM3_PWM_Handler,TIM_CHANNEL_4);
}
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM3) //pwm实基参数配置为tim3时,才使能时钟和配置io口
{
__HAL_RCC_TIM3_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_Initure;
GPIO_Initure.Pin=GPIO_PIN_1; //PB1
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速
GPIO_Initure.Alternate=GPIO_AF2_TIM3; //复用为TIM3
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB1
}
}
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
delay_init(180); //初始化延时函数
uart_init(115200); //初始化USART
LED_Init(); //初始化LED
KEY_Init(); //初始化按键
TIM3_PWM_Init(); //调用pwm_init
}
试了一下改变占空比,输出的频率也会改变,实在搞不懂
|
|