首先,先來(lái)看一下這個(gè)模塊的基本功能和原理。
HC-SR04超聲波測(cè)距模塊可提供2cm-400cm的非接觸式距離感測(cè)功能,測(cè)距精度可達(dá)高到3mm;模塊包括超聲波發(fā)射器、接收器與控制電路。像智能小車的測(cè)距以及轉(zhuǎn)向,或是一些項(xiàng)目中,常常會(huì)用到。智能小車測(cè)距可以及時(shí)發(fā)現(xiàn)前方的障礙物,使智能小車可以及時(shí)轉(zhuǎn)向,避開(kāi)障礙物。
注意是5v輸入,但是我用stm32 的3.3v輸入也是沒(méi)有問(wèn)題的。
二.工作原理
1.給超聲波模塊接入電源和地。
2.給脈沖觸發(fā)引腳(trig)輸入一個(gè)長(zhǎng)為20us的高電平方波
3.輸入方波后,模塊會(huì)自動(dòng)發(fā)射8個(gè)40KHz的聲波,與此同時(shí)回波引腳(echo)端的電平會(huì)由0變?yōu)?;(此時(shí)應(yīng)該啟動(dòng)定時(shí)器計(jì)時(shí))
4.當(dāng)超聲波返回被模塊接收到時(shí),回波引 腳端的電平會(huì)由1變?yōu)?;(此時(shí)應(yīng)該停止定時(shí)器計(jì)數(shù)),定時(shí)器記下的這個(gè)時(shí)間即為超聲波由發(fā)射到返回的總時(shí)長(zhǎng)。
5.根據(jù)聲音在空氣中的速度為344米/秒,即可計(jì)算出所測(cè)的距離。
要學(xué)習(xí)和應(yīng)用傳感器,學(xué)會(huì)看懂傳感器的時(shí)序圖是很關(guān)鍵的,所以我們來(lái)看一下HC-SR04的時(shí)序觸發(fā)圖。
我們來(lái)分析一下這個(gè)時(shí)序圖,先由觸發(fā)信號(hào)啟動(dòng)HC-RS04測(cè)距模塊,也就是說(shuō),主機(jī)要先發(fā)送至少10us的高電平,觸發(fā)HC-RS04,模塊內(nèi)部發(fā)出信號(hào)是傳感器自動(dòng)回應(yīng)的,我們不用去管它。輸出回響信號(hào)是我們需要關(guān)注的。信號(hào)輸出的高電平就是超聲波發(fā)出到重新返回接收所用的時(shí)間。用定時(shí)器,可以把這段時(shí)間記錄下來(lái),算出距離,別忘了結(jié)果要除于2,因?yàn)榭倳r(shí)間是發(fā)送和接收的時(shí)間總和。
下面是親測(cè)可用的驅(qū)動(dòng)程序。
芯片型號(hào)為stm32f103zet6,超聲波測(cè)距后通過(guò)串口打印到電腦上面。
驅(qū)動(dòng)和測(cè)距;
//超聲波測(cè)距
#include "hcsr04.h"
#define HCSR04_PORT GPIOB
#define HCSR04_CLK RCC_APB2Periph_GPIOB
#define HCSR04_TRIG GPIO_Pin_5
#define HCSR04_ECHO GPIO_Pin_6
#define TRIG_Send PBout(5)
#define ECHO_Reci PBin(6)
u16 msHcCount = 0;//ms計(jì)數(shù)
void Hcsr04Init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //生成用于定時(shí)器設(shè)置的結(jié)構(gòu)體
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);
//IO初始化
GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG; //發(fā)送電平引腳
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);
GPIO_InitStructure.GPIO_Pin = HCSR04_ECHO; //返回電平引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);
//定時(shí)器初始化 使用基本定時(shí)器TIM6
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); //使能對(duì)應(yīng)RCC時(shí)鐘
//配置定時(shí)器基礎(chǔ)結(jié)構(gòu)體
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = (1000-1); //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值 計(jì)數(shù)到1000為1ms
TIM_TimeBaseStructure.TIM_Prescaler =(72-1); //設(shè)置用來(lái)作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 1M的計(jì)數(shù)頻率 1US計(jì)數(shù)
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//不分頻
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計(jì)數(shù)模式
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位
TIM_ClearFlag(TIM6, TIM_FLAG_Update); //清除更新中斷,免得一打開(kāi)中斷立即產(chǎn)生中斷
TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); //打開(kāi)定時(shí)器更新中斷
hcsr04_NVIC();
TIM_Cmd(TIM6,DISABLE);
}
//tips:static函數(shù)的作用域僅限于定義它的源文件內(nèi),所以不需要在頭文件里聲明
static void OpenTimerForHc() //打開(kāi)定時(shí)器
{
TIM_SetCounter(TIM6,0);//清除計(jì)數(shù)
msHcCount = 0;
TIM_Cmd(TIM6, ENABLE); //使能TIMx外設(shè)
}
static void CloseTimerForHc() //關(guān)閉定時(shí)器
{
TIM_Cmd(TIM6, DISABLE); //使能TIMx外設(shè)
}
//NVIC配置
void hcsr04_NVIC()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn; //選擇串口1中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //搶占式中斷優(yōu)先級(jí)設(shè)置為1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //響應(yīng)式中斷優(yōu)先級(jí)設(shè)置為1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中斷
NVIC_Init(&NVIC_InitStructure);
}
//定時(shí)器6中斷服務(wù)程序
void TIM6_IRQHandler(void) //TIM3中斷
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) //檢查TIM3更新中斷發(fā)生與否
{
TIM_ClearITPendingBit(TIM6, TIM_IT_Update ); //清除TIMx更新中斷標(biāo)志
msHcCount++;
}
}
//獲取定時(shí)器時(shí)間
u32 GetEchoTimer(void)
{
u32 t = 0;
t = msHcCount*1000;//得到MS
t += TIM_GetCounter(TIM6);//得到US
TIM6->CNT = 0; //將TIM2計(jì)數(shù)寄存器的計(jì)數(shù)值清零
Delay_Ms(50);
return t;
}
//一次獲取超聲波測(cè)距數(shù)據(jù) 兩次測(cè)距之間需要相隔一段時(shí)間,隔斷回響信號(hào)
//為了消除余震的影響,取五次數(shù)據(jù)的平均值進(jìn)行加權(quán)濾波。
float Hcsr04GetLength(void )
{
u32 t = 0;
int i = 0;
float lengthTemp = 0;
float sum = 0;
while(i!=5)
{
TRIG_Send = 1; //發(fā)送口高電平輸出
Delay_Us(20);
TRIG_Send = 0;
while(ECHO_Reci == 0); //等待接收口高電平輸出
OpenTimerForHc(); //打開(kāi)定時(shí)器
i = i + 1;
while(ECHO_Reci == 1);
CloseTimerForHc(); //關(guān)閉定時(shí)器
t = GetEchoTimer(); //獲取時(shí)間,分辨率為1US
lengthTemp = ((float)t/58.0);//cm
sum = lengthTemp + sum ;
}
lengthTemp = sum/5.0;
return lengthTemp;
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: Delay_Ms_Ms
** 功能描述: 延時(shí)1MS (可通過(guò)仿真來(lái)判斷他的準(zhǔn)確度)
** 參數(shù)描述:time (ms) 注意time<65535
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Ms(uint16_t time) //延時(shí)函數(shù)
{
uint16_t i,j;
for(i=0;i
上一篇:stm32的VCC/VDD/VSS/VEE/VBAT的區(qū)別
下一篇:stm32中斷嵌套全攻略
推薦閱讀
史海拾趣
隨著公司規(guī)模的擴(kuò)大,Collins Electronics Corp開(kāi)始將目光投向國(guó)際市場(chǎng)。他們積極參加國(guó)際電子展會(huì),與世界各地的潛在客戶和合作伙伴交流。通過(guò)與不同國(guó)家的企業(yè)合作,公司成功打入了國(guó)際市場(chǎng),產(chǎn)品銷量大幅提升。這一過(guò)程中,他們不僅學(xué)習(xí)了國(guó)際先進(jìn)的電子技術(shù),還積累了豐富的跨國(guó)運(yùn)營(yíng)經(jīng)驗(yàn)。
隨著公司規(guī)模的擴(kuò)大,Collins Electronics Corp開(kāi)始將目光投向國(guó)際市場(chǎng)。他們積極參加國(guó)際電子展會(huì),與世界各地的潛在客戶和合作伙伴交流。通過(guò)與不同國(guó)家的企業(yè)合作,公司成功打入了國(guó)際市場(chǎng),產(chǎn)品銷量大幅提升。這一過(guò)程中,他們不僅學(xué)習(xí)了國(guó)際先進(jìn)的電子技術(shù),還積累了豐富的跨國(guó)運(yùn)營(yíng)經(jīng)驗(yàn)。
Antenova公司在天線設(shè)計(jì)領(lǐng)域的創(chuàng)新是其迅速發(fā)展的關(guān)鍵因素之一。公司專注于研發(fā)高效率、低能耗、高可靠性的天線產(chǎn)品,以滿足快速增長(zhǎng)的物聯(lián)網(wǎng)市場(chǎng)需求。通過(guò)不斷的技術(shù)創(chuàng)新和產(chǎn)品升級(jí),Antenova成功在智能家居、汽車、可穿戴設(shè)備等多個(gè)領(lǐng)域取得了顯著的市場(chǎng)份額增長(zhǎng)。
進(jìn)入21世紀(jì),Broyce Control已經(jīng)成為電氣和電子產(chǎn)品設(shè)計(jì)、制造和供應(yīng)領(lǐng)域的佼佼者。公司不僅在技術(shù)上持續(xù)創(chuàng)新,還注重與行業(yè)伙伴的合作與交流。通過(guò)參與國(guó)際標(biāo)準(zhǔn)的制定和推廣,Broyce Control逐漸在行業(yè)內(nèi)樹(shù)立了領(lǐng)導(dǎo)地位。同時(shí),公司還積極承擔(dān)社會(huì)責(zé)任,推動(dòng)可持續(xù)發(fā)展和環(huán)保理念的實(shí)踐,為行業(yè)的健康發(fā)展做出了積極貢獻(xiàn)。
隨著業(yè)務(wù)的不斷發(fā)展,CMS開(kāi)始將目光投向國(guó)際市場(chǎng)。他們通過(guò)設(shè)立海外研發(fā)中心和生產(chǎn)基地,積極拓展海外市場(chǎng)。同時(shí),CMS還加強(qiáng)了與國(guó)際知名企業(yè)的合作與交流,共同推動(dòng)電子行業(yè)的發(fā)展。如今,CMS的產(chǎn)品已經(jīng)遍布全球多個(gè)國(guó)家和地區(qū),成為電子行業(yè)中不可忽視的一股力量。
在競(jìng)爭(zhēng)激烈的電子行業(yè)中,CMS始終保持著持續(xù)創(chuàng)新的態(tài)勢(shì)。他們不斷投入研發(fā)資源,推出了一系列具有創(chuàng)新性的產(chǎn)品。例如,他們開(kāi)發(fā)了一款基于人工智能技術(shù)的智能家居控制系統(tǒng),該系統(tǒng)能夠通過(guò)語(yǔ)音控制實(shí)現(xiàn)家電設(shè)備的智能化管理。這一產(chǎn)品的推出進(jìn)一步鞏固了CMS在智能家居領(lǐng)域的領(lǐng)先地位。
高性價(jià)比H.264DVR,H.264網(wǎng)絡(luò)機(jī)攝像方案 產(chǎn)品說(shuō)明: 1:內(nèi)置ARM9和DSP的雙核高速處理器 壓縮格式:H.264 2:嵌入式實(shí)時(shí)Linux操作系統(tǒng) 3:圖形化操作界面GUI 4:4路視頻輸入 2路復(fù)合視頻輸出 4路 ...… 查看全部問(wèn)答∨ |
測(cè)量電壓范圍為10mv——200v,首先應(yīng)對(duì)輸入信號(hào)進(jìn)行放大衰減處理,在下想求此原理圖,還請(qǐng)各位大俠多多幫助,本人將感激不盡??! 本人信箱:mrdz404@126.com [ 本帖最后由 翻跟頭 于 2008-7-28 15:05 編輯 ]… 查看全部問(wèn)答∨ |
在通信領(lǐng)域,“同步”概念是指頻率的同步,即網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)的時(shí)鐘頻率和相位同步,其誤差應(yīng)符合標(biāo)準(zhǔn)的規(guī)定。目前,在通信網(wǎng)中,頻率和相位同步問(wèn)題已經(jīng)基本解決,而時(shí)間的同步還沒(méi)有得到很好的解決。時(shí)間同步是指網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)時(shí)鐘以及通過(guò)網(wǎng)絡(luò)連接的 ...… 查看全部問(wèn)答∨ |
|
這里能發(fā)出讓信息嗎?不行的話版主就刪了吧。個(gè)人閑置 SBC-2410X開(kāi)發(fā)板ARM9 S3C2410A單板機(jī) 出讓 在taobao上買的,用了一段時(shí)間。因?yàn)椴辉購(gòu)氖逻@方面開(kāi)發(fā)了。所以出讓。 就是下面鏈接這個(gè)板子 http://auction1.taobao.com/auction/item_detail-0db2-4420282644eadbccd4199d836de6b352.jhtml 當(dāng)時(shí)買來(lái)就是上面的價(jià)格860 反正用不到了500賣了。 ...… 查看全部問(wèn)答∨ |
面對(duì)面定制培訓(xùn):x86或arm下Linux設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)(北京) 最近業(yè)余時(shí)間充裕,希望能找到想學(xué)x86及arm下Linux設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)的人。你可以根據(jù)自身的情況,選擇學(xué)習(xí)以下內(nèi)容,逐步成為L(zhǎng)inux下驅(qū)動(dòng)程序開(kāi)發(fā)高手。 初級(jí):掌握Linux內(nèi)核的基本操作(內(nèi)存分配、并發(fā)、中斷處理、 ...… 查看全部問(wèn)答∨ |
很久前就測(cè)試完成了,可以使用OpenOCD做編程調(diào)試操作:OpenOCD介紹:OpenOCD可以理解為JTAG調(diào)試的上位機(jī),可以支持一些低成本的硬件,比如并口和FT2323的JTAG Dongle,USBprog。由于其是開(kāi)源的工具,所以可以自己開(kāi)發(fā)JTAG調(diào)試工具,只需 ...… 查看全部問(wèn)答∨ |
新手求教:關(guān)于這個(gè)小程序的vga顯示部分有些看不懂了,忘各位大俠幫忙~ library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.Std_logic_arith.all;use IEEE.Std_logic_unsigned.all;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_ ...… 查看全部問(wèn)答∨ |
DSP讀書筆記 題目1:DSP在加速度計(jì)測(cè)試中的應(yīng)用 題目2:DSP多路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 題目3:揚(yáng)聲器音質(zhì)測(cè)試系統(tǒng)的設(shè)計(jì) 題目4:DSP 的電網(wǎng)諧波分析儀的設(shè)計(jì) 題目5:DSP的遠(yuǎn)程火災(zāi)監(jiān)控系統(tǒng)設(shè)計(jì) … 查看全部問(wèn)答∨ |
本帖最后由 dontium 于 2015-1-23 13:00 編輯 電池管理解決方案2012最新版本(中英)主要內(nèi)容包括新興的電源應(yīng)用,如:太陽(yáng)能充電,混合動(dòng)力汽車電池管理,無(wú)線電源等最新技術(shù)。以及電池充電管理,電池電量檢測(cè)等實(shí)用信息,欲知詳情,快快下載全文 ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- RISC-V人才該怎么培養(yǎng)?專家這樣說(shuō)
- 割草機(jī)器人,四大流派的巔峰之戰(zhàn)
- 車載顯示迎來(lái)三大革命丨“形態(tài)”革命
- 什么是“CDC+空懸”?
- 汽車電子信息安全:如何有效保護(hù)硬件Debug口?
- 新能源汽車核心技術(shù)之“大三電”、“小三電”
- 芯原如何推動(dòng)RISC-V嵌入式軟件人才發(fā)展?
- Arm 技術(shù)助力《國(guó)家地理》探險(xiǎn)家繪制地球海洋圖景
- Arm SME2 技術(shù)加速安卓 AI 升級(jí),驅(qū)動(dòng)移動(dòng)應(yīng)用下一代功能革新
- VGA接口定義、功能用途和種類
- 將低功耗設(shè)計(jì)進(jìn)行到底——評(píng)論、轉(zhuǎn)發(fā)贏大禮!
- 芯幣競(jìng)拍:感恩教師節(jié)專場(chǎng)
- Keysight示波器主題月有獎(jiǎng)系列活動(dòng)之 注冊(cè)大獎(jiǎng)天天抽 搶樓踩中亦有獎(jiǎng)
- Microchip有獎(jiǎng)直播:VectorBlox™ SDK 報(bào)名中
- 有獎(jiǎng)直播|ADI 慣性MEMS應(yīng)用那些事
- 借助 Microchip 生態(tài)系統(tǒng)中的 PIC® 和 AVR® 單片機(jī)開(kāi)啟嵌入式到云端之旅 系列在線研討會(huì)
- 帶你零起點(diǎn)入門STM32(專為嵌入式應(yīng)用而開(kāi)發(fā)的內(nèi)核)
- 福祿克首款熱成像萬(wàn)用表Fluke-279FC 即將上市!填寫問(wèn)卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來(lái)領(lǐng)取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬(wàn)能福袋派送中
- 匯編指令-MOV與ldr區(qū)別
- 匯編指令-CMP、TEQ
- 匯編指令-MRS(讀)和MSR(寫)指令操作CPSR寄存器和SPSR寄存器使用
- S3C2410 MMU(存儲(chǔ)器管理單元)詳述
- 【STM32Cube_06】使用USART發(fā)送和接收數(shù)據(jù)(查詢模式)
- 錘子R1如期發(fā)布 但老羅的革命產(chǎn)品是人與電腦的交互
- 紫光集團(tuán)將開(kāi)發(fā)5G芯片商用終端
- 究竟會(huì)不會(huì)嚇尿 錘子科技鳥(niǎo)巢發(fā)布會(huì)馬上開(kāi)始
- 王自如怒懟羅永浩:你在怕什么
- 比特大陸正挺進(jìn)AI芯片 五年內(nèi)營(yíng)收占比將達(dá)40%