日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]實(shí)驗(yàn)?zāi)康模寒?dāng)按鍵按下時(shí),讓PF10引腳的LED燈亮,當(dāng)按鍵再次按下時(shí),讓PF10引腳的LED燈滅;無論按下與否,PF9引腳的LED燈循環(huán)閃爍;實(shí)驗(yàn)步驟:實(shí)驗(yàn)程序:/***********************************led.c*****************

實(shí)驗(yàn)?zāi)康模?/p>

當(dāng)按鍵按下時(shí),讓PF10引腳的LED燈亮,
當(dāng)按鍵再次按下時(shí),讓PF10引腳的LED燈滅;

無論按下與否,PF9引腳的LED燈循環(huán)閃爍;


實(shí)驗(yàn)步驟:




實(shí)驗(yàn)程序:


/***********************************led.c*********************************/

#include"stm32f4xx.h"http://在SYSTEM目錄下可以找到

#include"sys.h"

voidLED_Init(void){

RCC->AHB1ENR=1<<5;//使能GPIO端口的F時(shí)鐘

GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_25M,GPIO_PUPD_PU);

PFout(9)=1;

PFout(10)=1;

}


/***********************************led.h*********************************/

#ifndef_LED_H

#define_LED_H

voidLED_Init(void);

#endif




[cpp]view plaincopy

/********************************************key.c***************************************/

#include"sys.h"

voidKey_Init(void){

RCC->AHB1ENR|=1<<4;//使能PORTE時(shí)鐘

//voidGPIO_Set(GPIO_TypeDef*GPIOx,u32BITx,u32MODE,u32OTYPE,u32OSPEED,u32PUPD);//GPIO設(shè)置函數(shù)

GPIO_Set(GPIOE,PIN3,GPIO_MODE_IN,0,0,GPIO_PUPD_PU);//PE3設(shè)置上拉輸入,這樣的話,

//當(dāng)按鍵沒有按下時(shí),默認(rèn)電平為高;

}


/********************************************key.h***************************************/

#ifndef_KEY_H

#define_KEY_H

voidKey_Init(void);

#endif




/************************************exti.c********************************/

#include"sys.h"

#include"delay.h"

#include"stm32f4xx.h"

/*

本示例的作用就是,

當(dāng)按鍵按下時(shí),蜂鳴器發(fā)出聲音,

當(dāng)按鍵再次按下時(shí),蜂鳴器靜音;

*/

/*

中斷初始化函數(shù):

主要是關(guān)于寄存器的相關(guān)配置

*/

voidEXTI3_Init(void){

//方法一:

RCC->APB2ENR|=1<<14;//開啟SYSCFG時(shí)鐘

SYSCFG->EXTICR[0]|=0x4<<12;//設(shè)置IO口與中斷線的映射關(guān)系;

EXTI->IMR|=1<<3;//開啟對應(yīng)中斷線上的中斷

EXTI->FTSR|=1<<3;//設(shè)置中斷觸發(fā)條件

//SCB和NVIC,可參考STM32F3與STM32F4系列CortexM4內(nèi)核編程手冊.pdf

SCB->AIRCR|=0x5<<8;//設(shè)置分組

NVIC->IP[9]|=0;//設(shè)置優(yōu)先級,具體可分析MY_NVIC_Init()函數(shù);

NVIC->ISER[0]|=1<<9;//使能中斷;

//方法二:

/************************************

使用SYSTEM目錄下提供的API來實(shí)現(xiàn),

具體可參考正點(diǎn)原子示例

************************************/

}

voidEXTI3_IRQHandler(void){

/*

此按鍵,在按鍵按下時(shí),處理不是很到位,

有待進(jìn)一步改進(jìn),主要是在連按那一個環(huán)節(jié)。

*/

delay_ms(20);//消抖

if(PEin(3)==0){

PFout(10)=!PFout(10);

}

/*

在中斷里邊最后記得清中斷:

*/

EXTI->PR|=1<<3;

}



/*************************************exti.h*******************************/

#ifndef_EXTI_H

#define_EXTI_H

voidEXTI3_Init(void);

#endif


/*************************************test.c*******************************/

#include"sys.h"

#include"delay.h"

#include"key.h"

#include"beep.h"

#include"exti.h"

#include"led.h"

//inti=0;

intmain(void){

Stm32_Clock_Init(336,8,2,7);//設(shè)置時(shí)鐘,168Mhz

delay_init(168);//初始化延時(shí)函數(shù)

Beep_Init();

Key_Init();

EXTI3_Init();

LED_Init();

while(1){

PFout(9)=0;

delay_ms(500);

PFout(9)=1;

delay_ms(500);

}

}



實(shí)驗(yàn)分析:

我們主要分析一下exti.c中的寄存器設(shè)置的這幾個步驟:

1. RCC->APB2ENR |= 1 << 14;

這一步的作用就是使能SYSCFG時(shí)鐘,

在使用外部中斷的時(shí)候一定要先使能SYSCFG時(shí)鐘;


2. SYSCFG->EXTICR[0] |= 0x4 << 12;

這一步的作用就是設(shè)置IO口與中斷線的映射關(guān)系;

那么問題來了,我如何知道的我的IO口與哪根中斷線是關(guān)聯(lián)起來的呢?


而我們是通過KEY1按鍵,對應(yīng)的IO口就是PE3,所以由上圖的映射關(guān)系,我們知道,我們應(yīng)該選擇中斷線3與之對應(yīng);

在官方提供的頭文件stm32f4xx.h中,我們可以看到:


typedefstruct

{

__IOuint32_tMEMRMP;/*!

__IOuint32_tPMC;/*!

__IOuint32_tEXTICR[4];/*!

uint32_tRESERVED[2];/*!

[cpp]view plaincopy

__IOuint32_tCMPCR;/*!

SYSCFG_TypeDef;






結(jié)合上述三幅圖,我們可以得知:

由于PE3對應(yīng)的中斷線為EXTI3,所以,我們我們這里僅需配置EXTI3,而EXTI3是在SYSCFG_EXTICR1中的;

所以我們僅需配置SYSCFG_EXTICR1寄存器的12位-15位為01

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式開發(fā)中,STM32的時(shí)鐘系統(tǒng)因其靈活性和復(fù)雜性成為開發(fā)者關(guān)注的焦點(diǎn)。然而,看似簡單的時(shí)鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時(shí)鐘源選擇、PLL配置、總線時(shí)鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時(shí)鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測等場景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革。基于STM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

當(dāng)前智能家居產(chǎn)品需求不斷增長 ,在這一背景下 ,對現(xiàn)有澆花裝置缺陷進(jìn)行了改進(jìn) ,設(shè)計(jì)出基于STM32單片機(jī)的全 自動家用澆花機(jī)器人。該設(shè)計(jì)主要由機(jī)械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機(jī)械結(jié)構(gòu)通過麥克納姆輪底盤與噴灑裝置的結(jié)合實(shí)現(xiàn)機(jī)器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過性強(qiáng)

用c++編程似乎是讓你的Arduino項(xiàng)目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個圖形化編程平臺將復(fù)雜電子項(xiàng)目的創(chuàng)建變成了拖動和連接塊的簡單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無線傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測、工業(yè)自動化等場景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實(shí)現(xiàn)高效休眠調(diào)度與動態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa

在實(shí)時(shí)控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時(shí)間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...

關(guān)鍵字: STM32 DMA

數(shù)字電源技術(shù)向高功率密度、高效率與高動態(tài)響應(yīng)方向加速演進(jìn),STM32微控制器憑借其基于DSP庫的算法加速能力與對LLC諧振變換器的精準(zhǔn)控制架構(gòu),成為優(yōu)化電源動態(tài)性能的核心平臺。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關(guān)鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對電機(jī)控制場景的深度優(yōu)化,成為高精度、高可靠性驅(qū)動系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機(jī)控制領(lǐng)域的核心優(yōu)勢集中體現(xiàn)在FOC(磁場定向控制)算法的硬件加速引擎與PWM死區(qū)時(shí)間的動態(tài)補(bǔ)...

關(guān)鍵字: STM32 電機(jī)控制

無線充電技術(shù)加速滲透消費(fèi)電子與汽車電子領(lǐng)域,基于Qi協(xié)議的無線充電發(fā)射端開發(fā)成為智能設(shè)備能量補(bǔ)給的核心課題。傳統(tǒng)模擬控制方案存在響應(yīng)滯后、參數(shù)調(diào)整困難等問題,而基于STM32的數(shù)字PID控制結(jié)合FOD(Foreign O...

關(guān)鍵字: STM32 無線充電
關(guān)閉