加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

STM32傳感器外設(shè)集-震動傳感器0-無中斷(SW_18015P)

05/10 10:04
1744
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 原理圖
    • 參考
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

傳感器我分為使用外部中斷與不使用外部中斷

因為和按鍵原理差不多,所以移植修改按鍵即可

原理圖

main.c

/**
  * @brief  主函數(shù)
  * @param  無
  * @retval 無
  */ 
int main(void)
{	
	/* LED端口初始化 */
	LED_GPIO_Config();
	LED1_ON;

	/* 按鍵端口初始化 */
	Key_GPIO_Config();
	
	/* 輪詢按鍵狀態(tài),若按鍵按下則反轉(zhuǎn)LED */
	while(1)                            
	{	   
		if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  )
		{
			/*LED1反轉(zhuǎn)*/
			LED1_TOGGLE;
		} 

		if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON  )
		{
			/*LED2反轉(zhuǎn)*/
			LED2_TOGGLE;
		}		
	}
}

SW_18015P.h

#ifndef __KEY_H
#define	__KEY_H


#include "stm32f10x.h"

//  引腳定義
#define    KEY1_GPIO_CLK     RCC_APB2Periph_GPIOA
#define    KEY1_GPIO_PORT    GPIOA			   
#define    KEY1_GPIO_PIN		 GPIO_Pin_0

#define    KEY2_GPIO_CLK     RCC_APB2Periph_GPIOC
#define    KEY2_GPIO_PORT    GPIOC		   
#define    KEY2_GPIO_PIN		  GPIO_Pin_13


 /** 按鍵按下標(biāo)置宏
	*  按鍵按下為高電平,設(shè)置 KEY_ON=1, KEY_OFF=0
	*  若按鍵按下為低電平,把宏設(shè)置成KEY_ON=0 ,KEY_OFF=1 即可
	*/
#define KEY_ON	1
#define KEY_OFF	0

void Key_GPIO_Config(void);
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);


#endif /* __KEY_H */

SW_18015P.c

#include "./key/bsp_key.h"  

/**
  * @brief  配置按鍵用到的I/O口
  * @param  無
  * @retval 無
  */
void Key_GPIO_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	/*開啟按鍵端口的時鐘*/
	RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);
	
	//選擇按鍵的引腳
	GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN; 
	// 設(shè)置按鍵的引腳為浮空輸入
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
	//使用結(jié)構(gòu)體初始化按鍵
	GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);
	
	//選擇按鍵的引腳
	GPIO_InitStructure.GPIO_Pin = KEY2_GPIO_PIN; 
	//設(shè)置按鍵的引腳為浮空輸入
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
	//使用結(jié)構(gòu)體初始化按鍵
	GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);	
}

 /*
 * 函數(shù)名:Key_Scan
 * 描述  :檢測是否有按鍵按下
 * 輸入  :GPIOx:x 可以是 A,B,C,D或者 E
 *		     GPIO_Pin:待讀取的端口位 	
 * 輸出  :KEY_OFF(沒按下按鍵)、KEY_ON(按下按鍵)
 */
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{			
	/*檢測是否有按鍵按下 */
	if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )  
	{	 
		/*等待按鍵釋放 */
		while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);   
		return 	KEY_ON;	 
	}
	else
		return KEY_OFF;
}

參考

STM32按鍵的檢測IO口上拉下拉電阻icon-default.png?t=N7T8https://blog.csdn.net/qq_18744449/article/details/123195309?ops_request_misc=&request_id=&biz_id=102&utm_term=stm32%E7%9B%91%E6%B5%8Bio%E5%8F%A3%E5%8F%98%E5%8C%96&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-4-123195309.142^v96^pc_search_result_base7&spm=1018.2226.3001.4450

聯(lián)系方式 微信號:13648103287

  • 聯(lián)系方式.docx

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
ACS711KLCTR-12AB-T 1 Allegro MicroSystems LLC Hall Effect Sensor, Rectangular, Surface Mount, ROHS COMPLIANT, MS-012AA, SOIC-8

ECAD模型

下載ECAD模型
$2.63 查看
MPXV6115VC6U 1 Motorola Mobility LLC DIFFERENTIAL, PEIZORESISTIVE PRESSURE SENSOR, -16.67-0Psi, 1.5%, 4.53-4.66V, SQUARE, SURFACE MOUNT, CASE 482A, 8 PIN
$20.28 查看
BMP388 1 Bosch Sensortec Peizoresistive Sensor,
$6.35 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

方案定制,程序設(shè)計方案、單片機程序設(shè)計與講解、APP定制開發(fā)。本公眾號致力于向讀者傳遞關(guān)于程序設(shè)計和開發(fā)的相關(guān)知識,并分享一些關(guān)于軟件開發(fā)的最佳實踐。如果您有什么問題或建議,請隨時聯(lián)系我們。我們將竭誠為您服務(wù)