stm32F4方向+脉冲发生器

利用空闲时间了一款方向+脉冲发生器。
具体功能如下:
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();
}

扫描二维码关注公众号,回复: 4724925 查看本文章

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

==========================================================

如有不对之处望指出。一起学习共同进步

邮箱:[email protected]

——十五

猜你喜欢

转载自blog.csdn.net/fifteenPeng/article/details/85460990