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

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]實(shí)驗(yàn)?zāi)康模寒?dāng)按鍵按下時(shí),讓PF10引腳的LED燈亮,當(dāng)按鍵再次按下時(shí),讓PF10引腳的LED燈滅;無(wú)論按下與否,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燈滅;

無(wú)論按下與否,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)按鍵沒(méi)有按下時(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;//開(kāi)啟SYSCFG時(shí)鐘

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

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

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

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

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

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

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

//方法二:

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

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

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

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

}

voidEXTI3_IRQHandler(void){

/*

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

有待進(jìn)一步改進(jìn),主要是在連按那一個(gè)環(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è)置的這幾個(gè)步驟:

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

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

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


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

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

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


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

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


typedefstruct

{

__IOuint32_tMEMRMP;/*!

__IOuint32_tPMC;/*!

__IOuint32_tEXTICR[4];/*!

uint32_tRESERVED[2];/*!

[cpp]view plaincopy

__IOuint32_tCMPCR;/*!

SYSCFG_TypeDef;






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

由于PE3對(duì)應(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)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

嵌入式系統(tǒng)的算法效率與硬件資源的平衡是核心挑戰(zhàn)。STM32微控制器通過(guò)零開(kāi)銷循環(huán)機(jī)制與DWT計(jì)數(shù)器的結(jié)合,為算法優(yōu)化提供了硬件級(jí)支持。本文以插入排序算法為例,探討如何利用STM32的硬件特性驗(yàn)證排序閾值,實(shí)現(xiàn)性能與代碼復(fù)...

關(guān)鍵字: STM32 DWT

智能家居與工業(yè)控制場(chǎng)景,手勢(shì)識(shí)別作為非接觸式交互的核心技術(shù),正從實(shí)驗(yàn)室走向消費(fèi)級(jí)應(yīng)用。以STM32F407VET6微控制器與TensorFlow Lite Micro框架的組合為例,通過(guò)模型量化、硬件加速與低功耗設(shè)計(jì),可...

關(guān)鍵字: STM32 TensorFlow

在高性能電機(jī)驅(qū)動(dòng)的“納秒級(jí)戰(zhàn)爭(zhēng)”中,浮點(diǎn)運(yùn)算單元(FPU)往往成為制約控制環(huán)帶寬的阿喀琉斯之踵。當(dāng)PWM載波頻率攀升至100kHz,留給電流環(huán)PID、Clarke/Park變換及SVPWM計(jì)算的時(shí)間窗口僅剩寥寥數(shù)微秒。此...

關(guān)鍵字: 電機(jī)控制算法 FOC磁場(chǎng) STM32

在工業(yè)控制、電機(jī)驅(qū)動(dòng)等實(shí)時(shí)性要求嚴(yán)苛的場(chǎng)景中,中斷響應(yīng)延遲直接影響系統(tǒng)精度與穩(wěn)定性。STM32系列微控制器憑借Cortex-M內(nèi)核的硬件特性,通過(guò)合理的系統(tǒng)架構(gòu)設(shè)計(jì)可實(shí)現(xiàn)微秒級(jí)中斷響應(yīng)。本文從硬件配置、中斷處理、代碼優(yōu)化...

關(guān)鍵字: 裸機(jī)開(kāi)發(fā) STM32

在工業(yè)控制、音頻處理等高性能嵌入式場(chǎng)景中,某電機(jī)驅(qū)動(dòng)項(xiàng)目通過(guò)混合使用寄存器操作與CMSIS-DSP庫(kù),將PID控制周期從120μs縮短至38μs,系統(tǒng)響應(yīng)速度提升3倍。本文將揭秘這種"底層+高層"混合編程模式的核心技巧。

關(guān)鍵字: HAL STM32 寄存器

嵌入式系統(tǒng)開(kāi)發(fā)手勢(shì)識(shí)別作為非接觸式人機(jī)交互的核心技術(shù),正從實(shí)驗(yàn)室走向消費(fèi)級(jí)應(yīng)用。然而,傳感器采集的原始信號(hào)常因電磁干擾、電源噪聲或機(jī)械抖動(dòng)產(chǎn)生失真,導(dǎo)致識(shí)別準(zhǔn)確率下降。本文以STM32微控制器與PAJ7620手勢(shì)識(shí)別傳感...

關(guān)鍵字: STM32 手勢(shì)識(shí)別 噪聲

在物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)中,快速實(shí)現(xiàn)穩(wěn)定可靠的網(wǎng)絡(luò)通信是項(xiàng)目成功的關(guān)鍵。W5500作為一款集成硬件TCP/IP協(xié)議棧的以太網(wǎng)控制器,憑借其"開(kāi)箱即用"的特性,可大幅縮短STM32平臺(tái)的網(wǎng)絡(luò)功能開(kāi)發(fā)周期。本文通...

關(guān)鍵字: STM32 W5500

工業(yè)物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)中,某智能電表項(xiàng)目曾因ADC采樣中斷響應(yīng)延遲導(dǎo)致數(shù)據(jù)丟失率高達(dá)15%。技術(shù)人員通過(guò)重構(gòu)DMA驅(qū)動(dòng)架構(gòu),將數(shù)據(jù)搬運(yùn)效率提升12倍,CPU占用率從38%降至3%,成功解決高速采樣場(chǎng)景下的實(shí)時(shí)性難題。這一案例...

關(guān)鍵字: STM32 DMA

工業(yè)機(jī)器人關(guān)節(jié)控制系統(tǒng)中,一個(gè)典型的伺服驅(qū)動(dòng)器需要在100μs周期內(nèi)完成電流采樣、位置反饋、PID計(jì)算和PWM輸出等12項(xiàng)關(guān)鍵任務(wù)。當(dāng)傳統(tǒng)固定優(yōu)先級(jí)調(diào)度導(dǎo)致機(jī)械臂出現(xiàn)0.3°的位置抖動(dòng)時(shí),某運(yùn)動(dòng)控制廠商通過(guò)引入混合排序算...

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

在STM32嵌入式系統(tǒng)開(kāi)發(fā)中,排序算法的效率直接影響傳感器數(shù)據(jù)處理、通信協(xié)議解析等核心任務(wù)的實(shí)時(shí)性。傳統(tǒng)快速排序在部分有序數(shù)據(jù)場(chǎng)景下易退化為O(n2)時(shí)間復(fù)雜度,而單純依賴三數(shù)取中法優(yōu)化基準(zhǔn)值選擇仍存在小規(guī)模數(shù)據(jù)效率不足...

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