<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32F103C8T6中斷特征介紹 用按鈕為STM32 MCU觸發一個中斷

芯情觀察猿 ? 來源:芯情觀察猿 ? 作者:芯情觀察猿 ? 2022-05-17 08:57 ? 次閱讀

中斷是MCU的特征之一,STM32F103C8T6也不例外。以下通過STM32F103C8T6 Blue Pill外接一個按鈕,向MCU觸發外部中斷。

STM32F103C8T6中斷特征

中斷有硬件中斷和軟件中斷兩種,當一個中斷發生時,相應的中斷服務程序(ISR)和中斷處理程序就開始運行了。其中,ISR的指令必須盡可能小,ISR中也不能出現delay ()之類的阻塞函數。

STM32 Blue Pill或者STM32F103C8T6 MCU指定NVIC來管理所有外部中斷和外設中斷,其應用采用了Arduino IDE。因此,我們可使用相同的句法來配置外部中斷,這可通過以下稱作 “attachInterrupt ()” 的句法給出:
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

該句法的第一個參數 digitalPinToInterrupt(pin) 代表預期外部中斷的MCU引腳,例如,如果按鈕連接于PA0,該參數就變成“digitalPinToInterrupt(PA0)”。

第二個參數是ISR函數,該函數必須具有 void 返回類型,不能代任何參數。

第三個函數是是觸發中斷的模式,例如,信號突變到哪個點位時,必須觸發一個中斷。Arduino環境下,該參數通常為5個用戶預定義的常數,但STM32須從如下3個選項中選?。?br /> ?CHANGE: 在引腳數值改變時觸發中斷。
?RISING: 當引腳數值從LOW 上升到 HIGH 時觸發中斷。
?FALLING: 當引腳數值從 HIGH 回落到 LOW 時觸發中斷。

用按鈕為STM32 MCU觸發一個中斷

本項目所需元件包括:STM32F103C8T6藍丸版、按鈕、USB-UART轉換器、USB電纜,杜邦線。

pYYBAGKC8qaAfY_AAACKIt_n0ls827.png

首先,將按鈕連接到 PA0 引腳,并通過一個4.7KΩ電阻器上拉到HIGH ,另一引腳接 GND。
以下代碼用以激勵 PA0 引腳的中斷,button_ISR用來切換LED。
int ledPin = PC13;
int buttonPin = PA0;
int ledToggle;
int previousState = HIGH;
unsigned int previousPress = 0;
volatile int buttonFlag;
int buttonDebounce = 20;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), button_ISR, CHANGE);
}
void loop()
{
if((millis() – previousPress) > buttonDebounce && buttonFlag)
{
previousPress = millis();
if(digitalRead(buttonPin) == LOW && previousState == HIGH)
{
ledToggle =! ledToggle;
digitalWrite(ledPin, ledToggle);
previousState = LOW;
}
else if(digitalRead(buttonPin) == HIGH && previousState == LOW)
{
previousState = HIGH;
}
buttonFlag = 0;
}
}
void button_ISR()
{
buttonFlag = 1;
}
本項目演示了STM32F103C8T6 Blue Pill外部中斷的操作,每按一次按鈕就觸發一次中斷,STM32 MCU就執行一次簡單ISR,返回來切換LED狀態。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16130

    瀏覽量

    344846
  • 中斷
    +關注

    關注

    5

    文章

    884

    瀏覽量

    41067
  • STM32F103C8T6
    +關注

    關注

    104

    文章

    150

    瀏覽量

    81603
收藏 人收藏

    評論

    相關推薦

    stm32f103c8t6鬧鐘中斷無響是什么原因導致的?

    stm32f103c8t6鬧鐘中斷無響應麻煩大佬幫忙看看
    發表于 03-26 07:29

    STM32F103C8T6STM32F103C6T6

    開發板STM32F103STM32F103C8T6學習開發板
    btsostudio
    發布于 :2022年06月16日 17:58:17

    STM32F103C8T6做三電阻采樣時中斷連續進入兩次中斷

    的是STM32F103C8T6做三電阻采樣,ADC觸發方式是CC4通道觸發,ADC工作方式是同步注入方式,采樣的是ADC1三通道,AD
    發表于 09-05 09:22

    STM32f103c8t6,中斷試驗定時器中斷服務函數沒有執行?

    STM32f103c8t6,中斷試驗定時器中斷服務函數沒有執行??
    發表于 06-11 09:00

    基于stm32f103c8t6的核心板

    介紹:基于stm32f103c8t6 核心板(淘寶上到處都是的開發板),使用 STM32CubeMX軟件和Keil進行開發,實現了 GPIO輸出,Timer Interrupt 定時器中斷
    發表于 08-09 09:07

    STM32F103C8T6STM32F103CBT6的聯系與區別

    序:1 STM32F103C8T6STM32F103CBT6 引腳相同,唯的區別是前者64kflash(0x8000000~0x8
    發表于 08-09 06:49

    STM32F103C8T6定時器簡介

    STM32定時器的使用1、STM32F103C8T6定時器簡介2、通用定時器 TIM3 中斷控制PC13main函數timer.
    發表于 08-13 08:00

    STM32中斷分組

    ,PC0,PD0,PE0,PF0,PG0組,那么依此類推,我們能得出共有16 組,STM32 規定,每
    發表于 08-13 06:52

    Ardunio STM32F103C8T6中斷引腳

    Ardunio STM32F103C8T6中斷引腳來解碼SYN500R信號 STM32F103C8T6 for Ardunio IDESYN500R芯片4支腳不帶解碼超外差接收模塊關于STM
    發表于 08-17 06:49

    stm32f103zet6移植到stm32f103c8t6

    這里以stm32f103zet6移植到stm32f103c8t6例:1、點開魔術棒–>device修改芯片型號為stm32f103c8t
    發表于 08-24 07:47

    深圳高價回收STM32F103C8T6 收購STM32F103C8T6

    大量收購工廠庫存ST電子芯片STM32F103C8T6 ,實力收購工廠庫存ST芯片STM32F103C8T6 ,回收價格高??!財富熱線 帝歐電子 趙先生 ***同步微信 )QQ:879821252
    發表于 08-30 16:10

    STM32F103C8T6 MCU

    MCU:初步選型是STM32F103C8T6,64 Pin,淘寶價格大概8.xRMB
    發表于 09-13 07:53

    如何實現STM32F103C8T6按鍵中斷功能?

    如何實現STM32F103C8T6按鍵中斷功能?
    發表于 12-14 07:25

    如何對STM32F103C8T6 CAN中斷優先級進行配置

    如何對STM32F103C8T6CAN中斷優先級進行配置?如何對STM32F103C8T6 CAN進行初始化呢?
    發表于 12-15 07:27

    STM32F103C8T6STM32F103CBT6的區別

    序:1 STM32F103C8T6STM32F103CBT6 引腳相同,唯的區別是前者64kflash(0x8000000~0x8
    發表于 01-26 08:19
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>