利用空閒時間了一款方向+脈衝發生器。
具體功能如下:
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
==========================================================
如有不對之處望指出。一起學習共同進步
——十五