一、簡介
本文介紹如何在STM32上使用霍爾傳感器模塊。
二、實驗平臺
庫版本:STM32F10x_StdPeriph_Lib_V3.5.0
編譯軟件:MDK4.53
硬件平臺:STM32開發(fā)板(主芯片stm32f103c8t6)
仿真器:JLINK
三、版權(quán)聲明
四、實驗前提
1、在進(jìn)行本文步驟前,請先閱讀以下博文:
暫無
2、在進(jìn)行本文步驟前,請先實現(xiàn)以下博文:
暫無
五、基礎(chǔ)知識
1、霍爾傳感器是什么?
答:霍爾傳感器是根據(jù)霍爾效應(yīng)制作的一種磁場傳感器。
用磁鐵去靠近霍爾傳感器時,霍爾傳感器的引腳電平會產(chǎn)生變化。
2、霍爾傳感器主要用在什么地方?
答:霍爾傳感器可測速、計數(shù)、限位上。
舉例限位功能:兩個霍爾傳感器形成45°的夾角,電機邊緣粘著一個磁鐵,一旦電機轉(zhuǎn)動導(dǎo)致磁鐵觸發(fā)任意其中一個霍爾傳感器,則STM32檢測到觸發(fā)后立刻停止電機,不能再繼續(xù)往此方向轉(zhuǎn)動。以此達(dá)到限制電機轉(zhuǎn)動角度的作用。
3、本文使用的是什么霍爾傳感器模塊?
答:
香瓜買的霍爾傳感器模塊一共有四個引腳,GND、VCC、D0、A0。
其中只需要用到三根線,GND、VCC、D0。(A0不知做啥用的,計數(shù)?)
使用方法:
1)5V供電。
2)用跳線連接D0和STM32的IO口(本文連接的是PA11)。
3)D0默認(rèn)是高電平,但磁鐵的特定一面(磁鐵另一面無用)去靠近霍爾傳感器模塊時,D0會被拉低。
4、霍爾傳感器與限位開關(guān)有什么區(qū)別?
答:
1)限位開關(guān)
①優(yōu)點:無功耗。
②缺點:易損壞。
2)霍爾傳感器
①優(yōu)點:不易損壞。
②缺點:有功耗。
六、實驗步驟
1、編寫并添加霍爾傳感器驅(qū)動
1)編寫驅(qū)動GUA_Hall_Sensor.c(存放在“……HARDWARE”)
//******************************************************************************
//name: GUA_Hall_Sensor.c
//introduce: 霍爾傳感器驅(qū)動
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜單片機之STM8/STM32(164311667)
//changetime: 2017.03.06
//******************************************************************************
#include "stm32f10x.h"
#include "GUA_Hall_Sensor.h"
/*********************宏定義************************/
//霍爾傳感器引腳
#define GUA_HALL_SENSOR_PORT GPIOA
#define GUA_HALL_SENSOR_PIN GPIO_Pin_11
//消抖總次數(shù)
#define GUA_HALL_SENSOR_DISAPPERAS_SHAKS_COUNT 500000
/*********************內(nèi)部變量************************/
static GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_IdleCount = 0; //消抖時的空閑狀態(tài)計數(shù)值
static GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_TriggerCount = 0; //消抖時的觸發(fā)狀態(tài)計數(shù)值
/*********************內(nèi)部函數(shù)************************/
static void GUA_Hall_Sensor_IO_Init(void);
//******************************************************************************
//name: GUA_Hall_Sensor_IO_Init
//introduce: 霍爾傳感器的IO初始化
//parameter: none
//return: none
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜單片機之STM8/STM32(164311667)
//changetime: 2017.03.06
//******************************************************************************
static void GUA_Hall_Sensor_IO_Init(void)
{
//IO結(jié)構(gòu)體
GPIO_InitTypeDef GPIO_InitStructure;
//時鐘使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//霍爾IO配置
GPIO_InitStructure.GPIO_Pin = GUA_HALL_SENSOR_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GUA_HALL_SENSOR_PORT, &GPIO_InitStructure);
}
//******************************************************************************
//name: GUA_Hall_Sensor_Check_Pin
//introduce: 霍爾傳感器檢測觸發(fā)狀態(tài)
//parameter: none
//return: GUA_HALL_SENSOR_STATUS_IDLE or GUA_HALL_SENSOR_STATUS_TRIGGER
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜單片機之STM8/STM32(164311667)
//changetime: 2017.03.06
//******************************************************************************
GUA_U8 GUA_Hall_Sensor_Check_Pin(void)
{
//沒觸發(fā)
if(GPIO_ReadInputDataBit(GUA_HALL_SENSOR_PORT, GUA_HALL_SENSOR_PIN) == SET)
{
//計數(shù)
sGUA_Hall_Sensor_DisapperasShakes_IdleCount++;
sGUA_Hall_Sensor_DisapperasShakes_TriggerCount = 0;
//判斷計數(shù)是否足夠
if(sGUA_Hall_Sensor_DisapperasShakes_IdleCount >= GUA_HALL_SENSOR_DISAPPERAS_SHAKS_COUNT)
{
return GUA_HALL_SENSOR_STATUS_IDLE;
}
}
//觸發(fā)
else
{
//計數(shù)
sGUA_Hall_Sensor_DisapperasShakes_IdleCount = 0;
sGUA_Hall_Sensor_DisapperasShakes_TriggerCount++;
//判斷計數(shù)是否足夠
if(sGUA_Hall_Sensor_DisapperasShakes_TriggerCount >= GUA_HALL_SENSOR_DISAPPERAS_SHAKS_COUNT)
{
return GUA_HALL_SENSOR_STATUS_TRIGGER;
}
}
return GUA_HALL_SENSOR_STATUS_DISAPPERAS_SHAKS;
}
//******************************************************************************
//name: GUA_Limit_Switch_Init
//introduce: 霍爾傳感器初始化
//parameter: none
//return: none
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜單片機之STM8/STM32(164311667)
//changetime: 2017.03.06
//******************************************************************************
void GUA_Hall_Sensor_Init(void)
{
//初始化IO
GUA_Hall_Sensor_IO_Init();
}
2)編寫驅(qū)動頭文件GUA_Hall_Sensor.h(存放在“……HARDWARE”)
//******************************************************************************
//name: GUA_Hall_Sensor.h
//introduce: 霍爾傳感器驅(qū)動的頭文件
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜單片機之STM8/STM32(164311667)
//changetime: 2017.03.06
//******************************************************************************
#ifndef _GUA_HALL_SENSOR_H_
#define _GUA_HALL_SENSOR_H_
/*********************宏定義************************/
//類型宏
#ifndef GUA_U8
typedef unsigned char GUA_U8;
#endif
#ifndef GUA_8
typedef signed char GUA_8;
#endif
#ifndef GUA_U16
typedef unsigned short GUA_U16;
#endif
#ifndef GUA_16
typedef signed short GUA_16;
#endif
#ifndef GUA_U32
typedef unsigned long GUA_U32;
#endif
#ifndef GUA_32
typedef signed long GUA_32;
#endif
#ifndef GUA_U64
typedef unsigned long long GUA_U64;
#endif
#ifndef GUA_64
typedef signed long long GUA_64;
#endif
//霍爾傳感器的觸發(fā)狀態(tài)
#define GUA_HALL_SENSOR_STATUS_TRIGGER 0 //霍爾傳感器觸發(fā)
#define GUA_HALL_SENSOR_STATUS_IDLE 1 //霍爾傳感器沒觸發(fā)
#define GUA_HALL_SENSOR_STATUS_DISAPPERAS_SHAKS 2 //霍爾傳感器消抖中
/*********************外部函數(shù)聲明************************/
GUA_U8 GUA_Hall_Sensor_Check_Pin(void);
void GUA_Hall_Sensor_Init(void);
#endif
3)工程中添加GUA_Hall_Sensor.c
4)在MDK設(shè)置中添加串口驅(qū)動源文件路徑
2、在應(yīng)用層中調(diào)用
1)添加驅(qū)動頭文件(main.c中)
#include "GUA_Hall_Sensor.h"
2)添加驅(qū)動初始化代碼(main.c的main函數(shù)中)
//霍爾傳感器初始化
GUA_Hall_Sensor_Init();
3)添加測試代碼
①寫測試代碼(main.c中)
static void GUA_Test(void)
{
U8 nGUA_Ret = 0;
U8 nGUA_Stop = 0;
while(1)
{
上一篇:STM32之電量采集
下一篇:STM32之timer2的精準(zhǔn)延時
推薦閱讀
史海拾趣
隨著公司規(guī)模的不斷擴大和市場份額的增加,ESS開始在全球范圍內(nèi)擴張其業(yè)務(wù)。ESS的分支機構(gòu)遍布美國各地,同時也在中國、日本、韓國等地設(shè)立了海外機構(gòu)。這些海外機構(gòu)不僅有助于ESS更好地了解當(dāng)?shù)厥袌鲂枨蠛透偁帒B(tài)勢,還為公司在全球范圍內(nèi)推廣其產(chǎn)品和服務(wù)提供了有力支持。ESS的全球戰(zhàn)略布局為其在競爭激烈的半導(dǎo)體芯片市場中保持領(lǐng)先地位提供了有力保障。
Corsair Memory Inc公司的成功不僅在于其產(chǎn)品的創(chuàng)新,更在于其與全球知名電腦廠商的合作。多家世界級的OEM合作伙伴選擇Corsair作為其內(nèi)存供應(yīng)商,這不僅提升了Corsair的品牌影響力,也為其帶來了穩(wěn)定的訂單和市場份額。這種合作關(guān)系的建立,是Corsair在電子行業(yè)中持續(xù)發(fā)展的重要支撐。
在環(huán)保意識日益增強的今天,Alpha Industries積極響應(yīng)綠色生產(chǎn)的號召。公司利用電子技術(shù)優(yōu)化生產(chǎn)流程,減少能源消耗和廢棄物排放。此外,Alpha Industries還推出了采用環(huán)保材料制成的軍事服裝系列,以實際行動踐行綠色環(huán)保理念。這些舉措不僅有助于提升公司的社會形象,也為公司的可持續(xù)發(fā)展奠定了堅實基礎(chǔ)。
這些故事展示了Alpha Industries如何在電子技術(shù)的推動下,不斷創(chuàng)新并適應(yīng)市場變化,進(jìn)而在相關(guān)領(lǐng)域取得顯著發(fā)展。盡管這些故事并未直接涉及電子行業(yè)的核心業(yè)務(wù),但它們卻充分體現(xiàn)了Alpha Industries在技術(shù)創(chuàng)新和市場拓展方面的積極努力和取得的成果。
近年來,電子行業(yè)面臨著諸多挑戰(zhàn),如技術(shù)更新迅速、市場競爭激烈等。Crowd Supply作為行業(yè)的一員,也不可避免地受到了這些挑戰(zhàn)的影響。然而,他們并沒有因此而退縮,反而通過持續(xù)創(chuàng)新和優(yōu)化平臺服務(wù)來應(yīng)對這些挑戰(zhàn)。他們不斷調(diào)整眾籌策略,加強項目篩選和風(fēng)險評估,以確保平臺上項目的質(zhì)量和成功率。同時,他們也積極尋求新的商業(yè)模式和合作機會,以拓展業(yè)務(wù)范圍和提升盈利能力。
以上五個故事展示了Crowd Supply在電子行業(yè)中的可能發(fā)展歷程,雖然這些故事是虛構(gòu)的,但它們反映了眾籌平臺在推動硬件創(chuàng)新和市場發(fā)展方面的重要作用。通過不斷創(chuàng)新和優(yōu)化服務(wù),Crowd Supply有望在未來繼續(xù)發(fā)揮其在電子行業(yè)中的領(lǐng)導(dǎo)作用。
隨著市場的不斷拓展和技術(shù)的不斷進(jìn)步,GAIA蓋亞電源持續(xù)加大研發(fā)投入,致力于技術(shù)創(chuàng)新和產(chǎn)品升級。公司擁有一支由超過300名工程師組成的研發(fā)團隊,他們緊密關(guān)注行業(yè)動態(tài),積極應(yīng)對新技術(shù)和市場趨勢。每年,GAIA蓋亞電源都會推出數(shù)百種新產(chǎn)品,以滿足不同客戶的需求。這些新產(chǎn)品不僅涵蓋了更廣泛的電壓范圍和輸出功率,還集成了最新的濾波、網(wǎng)絡(luò)調(diào)節(jié)等先進(jìn)技術(shù),進(jìn)一步提升了產(chǎn)品的性能和可靠性。
隨著科技的進(jìn)步,ATM也在不斷進(jìn)行技術(shù)創(chuàng)新和升級。從最初的簡單取款功能,到現(xiàn)在的存款、轉(zhuǎn)賬、查詢等多種功能,ATM的功能日益豐富。同時,隨著移動支付和互聯(lián)網(wǎng)金融的興起,ATM也在逐漸與這些新技術(shù)融合,提供更加便捷、安全的金融服務(wù)。
avr單片機用7.3728 MHz或11.0592 MHz如何產(chǎn)生5MS的定時時標(biāo)? avr單片機用7.3728 MHz或11.0592 MHz如何產(chǎn)生5MS的定時時標(biāo)? 我用AVR單片機,晶體是7.3728 MHz或11.0592 MHz,要如何設(shè)置定時器才能產(chǎn)生準(zhǔn)確的5MS定時中斷?… 查看全部問答∨ |
|
如何在單片機中實現(xiàn)高效的數(shù)據(jù)實時濾波 在中斷程序中沒一個采樣周期都會從外設(shè)采集到一個數(shù)據(jù)readbuf[0],該數(shù)據(jù)中存在毛刺,毛刺可認(rèn)為是連續(xù)兩次采樣結(jié)果之差的絕對值大于一個閾值N,N為宏定義的一個數(shù)。但如果連續(xù)M次都出現(xiàn)這樣的大數(shù)則認(rèn)為是有效數(shù)字,M也為宏定義。 由于單片機資源 ...… 查看全部問答∨ |
WinCE 6.0 R2 Platform builder for VS2005的插件可以用于VS2008嗎? 現(xiàn)有WinCE 6.0 R2 Platform builder for VS2005的插件,但是我準(zhǔn)備遷移到VS2008的平臺下,關(guān)于VS2008的資料比較少,請問該插件可以用于VS2008嗎?… 查看全部問答∨ |
在電路研發(fā)過程中,電容是最常用的電子元器件之一,主要用于平滑、儲存能量或者交流電壓整流后的濾波,另外還用于非精密的時序延時等。在代表電源壽命的 MTBF預(yù)計時,模型分析結(jié)果表明電容是影響開關(guān)電源壽命的主要因素,因此了解影響電容壽命的因 ...… 查看全部問答∨ |
|
計劃用9B96+TLC320AIC3254實現(xiàn)MP3與音頻記錄的功能,要外擴一塊1G以上的NAND FLASH。各位能不能推薦一塊用得比較多的,最好能有驅(qū)動代碼的NAND FLASH? 型號,大小,價格什么的,越詳細(xì)越好,謝謝。。… 查看全部問答∨ |
|
高手們給分析下void (*func(void (*p)(void *)))(void *) void (*func(void (*p)(void *)))(void *) { return p; }看了好久沒怎么明白。這樣寫的意思,目的。 [ 本帖最后由 zw357234798 于 2012-9-4 07:39 編輯 ]… 查看全部問答∨ |
我現(xiàn)在做畢業(yè)設(shè)計急缺DSP2812的McBSP的中文資料,希望各位幫幫我,感激不盡 我現(xiàn)在做畢業(yè)設(shè)計急缺DSP2812的McBSP的中文資料,希望各位幫幫我,感激不盡。我的郵箱是:yyazaz@126.com。… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機的無刷直流電機驅(qū)動器設(shè)計
- 超高速攝影機電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 利用驗證框架 JAIST揭示開源自動駕駛系統(tǒng)的安全漏洞
- 現(xiàn)代汽車集團擬采用VR模擬器替代道路測試 提升未來車型的競爭力
- 研究人員開發(fā)光驅(qū)動致動器 可用于驅(qū)動水下機器人
- 吉利將發(fā)射“千里浩瀚”衛(wèi)星,實現(xiàn)輔助駕駛系統(tǒng)與衛(wèi)星功能深度融合
- 以鴻道工業(yè)操作系統(tǒng)為核心 打造工業(yè)智能機器人新生態(tài)
- UNIST研發(fā)出新表面處理技術(shù) 延長下一代鋰金屬電池的壽命
- 車載SerDes芯片行業(yè)的"DeepSeek"時刻——瑞發(fā)科HSMT SerDes閃耀2025上海車展
- 豐田顛覆傳統(tǒng),固態(tài)電池明年就能量產(chǎn),最受傷的將是中國?
- 基于恩智浦與onsemi的駕駛員監(jiān)控系統(tǒng)方案
- 機器人行業(yè)周報|5月27日:宇樹G1格斗賽、人形機器人技術(shù)與場景融合趨勢
- 你曬單我送禮,曬TI樣片訂單即可贏好禮!
- 答題有禮|共同發(fā)展攜手騰飛泰克公司助力中國量子
- EEWORLD十周年為你而任性——上百塊ST開發(fā)板團購盛宴開始啦!49元包郵,發(fā)帖還返現(xiàn)
- 有獎直播:新能源行業(yè)中的電學(xué)測試與校準(zhǔn)應(yīng)用
- 力源&安森美有獎直播:RSL15 - 安森美更高效更智能更安全的 BLE 5.2 藍(lán)牙芯片
- 下載有禮:4種方法幫助您高效進(jìn)行元器件表征,加速元器件檢測
- 仲夏狂歡,TI 博文學(xué)習(xí)季再度熱力來襲!
- 免費申請評測:1.3元起的國產(chǎn)USB和Touchkey單片機CH554評估板