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();
}

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]

——十五

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章