標題:
STM32f103的超聲波控制無刷電機源碼
[打印本頁]
作者:
楓葉獨眠
時間:
2018-8-3 20:41
標題:
STM32f103的超聲波控制無刷電機源碼
我設置的是離地10cm,電機轉動。
單片機源程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "usart.h"
#include "ceju.h"
//接線說明echo-PA0;trig-PA1;vcc接5v
//TM3使超聲波每隔一秒發(fā)送,TM2輸入捕獲。
float Distance;
extern u8 TIM2CH1_CAPTURE_STA; //輸入捕獲狀態(tài)
extern u16 TIM2CH1_CAPTURE_VAL; //輸入捕獲值
int main(void)
{
u32 temp=0;
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優(yōu)先級分組2
delay_init(); //延時函數(shù)初始化
uart_init(115200); //9600
LED_Init(); //初始化與LED連接的硬件接口
GPIO_Config() ;
TIM3_Int_Init(1999,719); //一秒發(fā)送一次。4999*2,7199
TIM3_Config(1999,719);
TIM2_Cap_Init(0XFFFF,7199); //以10khz的頻率計數(shù)
ceju_Init();
TIM_SetCompare1(TIM3,80);
TIM_SetCompare2(TIM3,80);
delay_ms(1500);
delay_ms(1500);
delay_ms(1500);
delay_ms(1500);
while(1)
{
if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
{
temp=TIM2CH1_CAPTURE_STA&0X3F;
temp*=65536; //溢出時間總和
temp+=TIM2CH1_CAPTURE_VAL; //得到總的高電平時間
Distance=temp*5*34*2/200.0;
if(Distance>10)
{
TIM_SetCompare1(TIM3,135);
TIM_SetCompare2(TIM3,135);
}
else
{
TIM_SetCompare1(TIM3,88);
TIM_SetCompare2(TIM3,88);
}
//printf("distance:%f cm\r\n",Distance);
TIM2CH1_CAPTURE_STA=0; //開啟下一次捕獲
}
}
}
復制代碼
所有資料51hei提供下載:
超聲波捕獲測距實驗.rar
(292.18 KB, 下載次數(shù): 28)
2018-8-3 23:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1