因为前段时间需要用STM32F103控制步进电机,所以写了了可用于控住GPIO口输出固定数量脉冲的函数,可直接输入脉冲数,并且可以调节PWM的频率(每个脉冲的周期)。
参考了网上大神的指导,我的思路是:用两个定时器(一个用于PWM输出,一个用于中断PWM输出),通过对PWM的周期和输出时间的控制,来达到输出固定脉冲数的目的。
下面为主要代码:
#include <sys.h>
#include <pwn.h>
#include <interrupt.h>
#include <step.h>
//输出固定脉冲数量
//speed为输出脉冲的频率
//pulse为输出脉冲数量
//在调脉冲频率时,需同时调x
void pulse_putput(u16 speed, u16 pulse)
{
TIM2_init(pulse*10); //设置脉冲数量(10为speed/100)
TIM_Cmd(TIM2, ENABLE); //使能TIM4
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能更新中断
TIM3_PWM_Init(speed); //设置PWM输出的频率
TIM_Cmd(TIM3, ENABLE); //使能定时器3
}
然后就是PWM的初始化代码(这一段是基础的PWM初始化)
//TIM3 PWN²¿·Ö³õʼ»¯

最低0.47元/天 解锁文章
1387

被折叠的 条评论
为什么被折叠?



