標(biāo)題:
新手學(xué)stm32,做一個(gè)超聲波測(cè)距源程序
[打印本頁(yè)]
作者:
秋刀魚(yú)zz
時(shí)間:
2019-10-29 10:40
標(biāo)題:
新手學(xué)stm32,做一個(gè)超聲波測(cè)距源程序
學(xué)完原子的輸入捕獲課件,突發(fā)奇想做個(gè)超聲波測(cè)距玩下就做了這個(gè)。PA1接trig,PAO接echo。
單片機(jī)源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
//輸入捕獲 實(shí)驗(yàn)
//改成超聲波測(cè)速模塊的實(shí)驗(yàn)引腳對(duì)應(yīng)如下
//trig PA(1)
//Echo(回響信號(hào)) PA(0)及TIM5ch1通道
extern u8 TIM5CH1_CAPTURE_STA; //輸入捕獲狀態(tài)
extern u16 TIM5CH1_CAPTURE_VAL; //輸入捕獲值
int main(void)
{
float distance;
u32 temp=0;
Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置
uart_init(72,115200); //串口初始化為115200
delay_init(72); //延時(shí)初始化
LED_Init(); //初始化與LED連接的硬件接口
TIM3_PWM_Init(899,0); //不分頻。PWM頻率=72000/(899+1)=80Khz
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的頻率計(jì)數(shù)
PAout(1)=1;
delay_ms(50);
PAout(1)=0;
while(1)
{
delay_ms(10);
trip();
LED0_PWM_VAL++;
if(LED0_PWM_VAL==300)LED0_PWM_VAL=0;
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
{
temp=TIM5CH1_CAPTURE_STA&0X3F;
temp*=65536; //溢出時(shí)間總和
temp+=TIM5CH1_CAPTURE_VAL; //得到總的高電平時(shí)間
distance=temp*0.0001*340/2;
printf("distance=%f cm\r\n",distance); //打印總的高點(diǎn)平時(shí)間
TIM5CH1_CAPTURE_STA=0; //開(kāi)啟下一次捕獲
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
超聲波測(cè)距模塊 HC-SR04.7z
(93.48 KB, 下載次數(shù): 41)
2019-10-29 21:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
466305213
時(shí)間:
2019-11-23 19:44
謝謝提供
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1