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

當前位置:首頁 > 單片機 > 單片機
[導讀]實驗目的:當按鍵按下時,讓PF10引腳的LED燈亮,當按鍵再次按下時,讓PF10引腳的LED燈滅;無論按下與否,PF9引腳的LED燈循環(huán)閃爍;實驗步驟:實驗程序:/***********************************led.c*****************

實驗目的:

當按鍵按下時,讓PF10引腳的LED燈亮,
當按鍵再次按下時,讓PF10引腳的LED燈滅;

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


實驗步驟:




實驗程序:


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

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

#include"sys.h"

voidLED_Init(void){

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

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時鐘

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

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

//當按鍵沒有按下時,默認電平為高;

}


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

#ifndef_KEY_H

#define_KEY_H

voidKey_Init(void);

#endif




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

#include"sys.h"

#include"delay.h"

#include"stm32f4xx.h"

/*

本示例的作用就是,

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

當按鍵再次按下時,蜂鳴器靜音;

*/

/*

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

主要是關于寄存器的相關配置

*/

voidEXTI3_Init(void){

//方法一:

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

SYSCFG->EXTICR[0]|=0x4<<12;//設置IO口與中斷線的映射關系;

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

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

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

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

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

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

//方法二:

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

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

具體可參考正點原子示例

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

}

voidEXTI3_IRQHandler(void){

/*

此按鍵,在按鍵按下時,處理不是很到位,

有待進一步改進,主要是在連按那一個環(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);//設置時鐘,168Mhz

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

Beep_Init();

Key_Init();

EXTI3_Init();

LED_Init();

while(1){

PFout(9)=0;

delay_ms(500);

PFout(9)=1;

delay_ms(500);

}

}



實驗分析:

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

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

這一步的作用就是使能SYSCFG時鐘,

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


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

這一步的作用就是設置IO口與中斷線的映射關系;

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


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

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


typedefstruct

{

__IOuint32_tMEMRMP;/*!

__IOuint32_tPMC;/*!

__IOuint32_tEXTICR[4];/*!

uint32_tRESERVED[2];/*!

[cpp]view plaincopy

__IOuint32_tCMPCR;/*!

SYSCFG_TypeDef;






結合上述三幅圖,我們可以得知:

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

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

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

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

關鍵字: STM32 DWT

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

關鍵字: STM32 TensorFlow

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

關鍵字: 電機控制算法 FOC磁場 STM32

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

關鍵字: 裸機開發(fā) STM32

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

關鍵字: HAL STM32 寄存器

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

關鍵字: STM32 手勢識別 噪聲

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

關鍵字: STM32 W5500

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

關鍵字: STM32 DMA

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

關鍵字: 電機控制 STM32

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

關鍵字: STM32 傳感器
關閉