利用空闲时间了一款方向+脉冲发生器。
具体功能如下:
1.完成频率可控 可控范围0-400KHZ
2.脉冲数量可控,方向可控
3.可加换向或者换频率延时
可设定参数如:
脉冲数量 脉冲方向 脉冲频率 换向延时 四个参数
软件设计方案:
1,通过PWM脉冲发生,发出等长脉冲宽度,通过计数器输入捕获模式完成计数,达到一定数量脉冲后关掉PWM脉冲。
优点:软件处理时间少,基本由硬件完成控制。 脉冲可以高达 42MHZ
不可行之处,当前电路下。两路脉冲通过其他IO口输出。 并非定时器脉冲输出通道。
2,通过软件处理,定时器定时时间到,拉高IO电平。
缺点:频率低;
黄色为脉冲信号,手机里仅有这个图片,将就看吧
/*************************************************************************
> File Name: main.c
> Author: fifteenPeng
> Mail: [email protected]
> Created Time: 2018-11-28
> Versions: V1.0
> Description: 目前仅能通过修改程序,来实现脉冲的频率变化。后期实现通过串口方式+上位机方式修改。
************************************************************************/
#include "stm32f4xx.h"
#include "IO.h"
#include "sys.h"
#include "systick.h"
#include "PulseCreat.h"
void HW_Init(void)
{
IO_Init();
}
void SW_Init(void)
{
//设置中断优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Systick_Init();
PulseNormalcy();
}
int main(void)
{
int loop;
HW_Init();
SW_Init();
//如果循环结束段设置为:0,2,4,6,8,则异常结束。
if(CTRL.state_end%2 == 0)
return 0;
if(CTRL.circulation == 0) //判断开启循环
{
loop = 0;
}
else
{
loop = CTRL.circulation_number; //开启
}
do{
CTRL.Run();
}while(loop>CTRL.loop);
return 0;
}
具体代码资源请下载:
https://download.csdn.net/download/fifteenpeng/10888031
==========================================================
如有不对之处望指出。一起学习共同进步
——十五