大学生
最后登录1970-1-1
在线时间 小时
注册时间2020-10-5
|
发表于 2021-2-27 09:20:53
|
显示全部楼层
是啊,五路脉冲都是同时发送的。这个就是开启定时器不同的通道,然后初始化完成之后,它就会自己发脉冲的。给你贴段代码吧( 网上很多的,你搜索 定时器 多通道就能找到 。火哥教程里面也有)
void motor_speed_init(int arr,int psc,int duty)
{
/*TIM12初始化*/
GPIO_InitTypeDef GPIO_Initstructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能 PA0,PA1时钟
/* 通用定时器PWM输出引脚 */
GPIO_Initstructure.GPIO_Mode =GPIO_Mode_AF_PP ;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz ;
GPIO_Init(GPIOA, &GPIO_Initstructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA, &GPIO_Initstructure);
GPIO_SetBits(GPIOA,GPIO_Pin_0);
/*APB1时钟周期72MHZ*/
TIM_TimeBaseInitStruct.TIM_ClockDivision = 0;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//计数器模式
TIM_TimeBaseInitStruct.TIM_Period = arr-1 ;//计数器周期arr 100 10000
TIM_TimeBaseInitStruct.TIM_Prescaler = psc-1;//预分频系数psc 72 72
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;//输出模式
TIM_OCInitStruct.TIM_OutputState =TIM_OutputState_Enable;//比较输出使能
TIM_OCInitStruct.TIM_OCPolarity =TIM_OCPolarity_High;//输出极性
TIM_OCInitStruct.TIM_Pulse = duty;//脉冲宽度 50 4000
//使能通道3重载值
TIM_OC1Init(TIM2,&TIM_OCInitStruct);
TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
TIM_OCInitStruct.TIM_OCPolarity =TIM_OCPolarity_High;//输出极性
TIM_OCInitStruct.TIM_Pulse = duty;//脉冲宽度
TIM_OC2Init(TIM2,&TIM_OCInitStruct);
TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
// TIM_ARRPreloadConfig(TIM2,ENABLE);//寄存器初始值使能
TIM_Cmd(TIM2,ENABLE);
}
具体哪些通道可以用你得去看数据手册的 |
|