国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【學(xué)習(xí)記錄】STM32中斷進(jìn)階任務(wù):按鍵控制指示燈閃爍頻率

這篇具有很好參考價值的文章主要介紹了【學(xué)習(xí)記錄】STM32中斷進(jìn)階任務(wù):按鍵控制指示燈閃爍頻率。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

采用德飛萊STM32板,主控芯片STM32F103ZET6。

任務(wù)內(nèi)容:利用按鍵B1控制指示燈LD2的閃爍頻率,閃爍頻率設(shè)置為3檔:初始狀態(tài)時,LD2按照2Hz的頻率閃爍;第一次按鍵后,LD2按照10 Hz的頻率閃爍;第二次按鍵后,LD2按照20Hz的頻率閃爍。再次按鍵后讓LD2恢復(fù)以2Hz的頻率閃爍,并重復(fù)上述過程。按鍵的檢測采用中斷方式。

硬件原理:按鍵B1由引腳PC13控制:按鍵按下時為下降沿觸發(fā)方式,釋放時為上升沿觸發(fā)方式。指示燈LD2由引腳PA5控制;PA5輸出高電平,開啟指示燈;PA5輸出低電平,關(guān)閉指示燈。

任務(wù)實(shí)現(xiàn)

1. 設(shè)計(jì)思路

采用前后臺編程模式:定義一個全局變量BlinkSpeed,初始化為0。在外部中斷服務(wù)程序(前臺程序)中修改BlinkSpeed的值;在主程序(后臺程序)的while(1)循環(huán)中不斷檢測BlinkSpeed的值,根據(jù)取值的不同修改指示燈的閃爍頻率。

2. 引腳分配和外設(shè)配置

本任務(wù)所使用的引腳和外設(shè)與基礎(chǔ)任務(wù)中所使用的相同,因此省去引腳分配和外設(shè)配置的過程。

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

1.

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

雙擊進(jìn)入

2.

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

3.

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

4.配置LED燈引腳(PB5)

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

5. 配置KEY鍵引腳(PE2)

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

配置上拉、上升沿和下降沿

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

使能中斷

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

6.配置時鐘樹

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

7.改名、保存、打開

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

stm32按鍵控制led閃爍頻率,STM32,中斷,按鍵,stm32,單片機(jī),學(xué)習(xí)

3. 程序編寫

生成MDK工程后,進(jìn)行應(yīng)用程序的編寫。具體代碼如程序代碼段1和2所示。

代碼段1:

/* USER CODE BEGIN PV */
volatile uint8_t BlinkSpeed = 0;// 指示燈閃爍頻率:0->2Hz 1->10Hz  2->20Hz
/* USER CODE END PV */
/* ………………………… */ // 省去中間部分代碼 
/* Infinite loop */
/* USER CODE BEGIN WHILE */ 
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		if( BlinkSpeed == 0) // 2Hz 閃爍頻率
		{
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
			HAL_Delay(500);
		}
		else if( BlinkSpeed == 1 ) // 10Hz 閃爍頻率
		{
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
			HAL_Delay(100);
		}
		else							 // 20Hz 閃爍頻率
		{
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
			HAL_Delay(50);
		}
		
  }
  /* USER CODE END 3 */

程序解釋:

① 第2行定義了一個變量 BlinkSpeed,用來存放指示燈的閃爍頻率:BlinkSpeed為0表示2 Hz的閃爍頻率;BlinkSpeed為1表示10Hz的閃爍頻率;BlinkSpeed為2表示20 Hz的閃爍頻率。由于變量BlinkSpeed在中斷服務(wù)程序中修改,在主程序中判斷。為了避免變量被編譯器優(yōu)化,在變量定義時,添加了關(guān)鍵字 volatile 來修飾。

② 第11~25行是while(1)循環(huán)中報(bào)執(zhí)行的代碼。采用if-else if-else的多分支語句,通過判斷BlinkSpeed的取值來改變指示燈的閃爍頻率:當(dāng)BlinkSpeed為0時,設(shè)置閃爍頻率為 2 Hz,即延時時間為500ms;當(dāng)BlinkSpeed為1時,設(shè)置閃爍頻率為10Hz,即延時時間為100ms;當(dāng)BlinkSpeed為2時,設(shè)置閃爍頻率為20Hz,即延時時間為50ms。

代碼段2:

/* USER CODE BEGIN 4 */
/*
 * @brief ExTI line detection callbacks.
 * @param GPIO_Pin: Specifes the pins connected EXTI line
 * @retval None
*/

void HAL_GPIO_EXTI_Callback(uint16_t GPI0_Pin)
{
	
	if(GPIO_PIN_2 == GPI0_Pin) // 判斷發(fā)生外部中斷的 GPIO 引腳
	{
		BlinkSpeed++; // 修改 BlinkSpeed 變量的值 
		if( BlinkSpeed == 3) // 判斷是否完成一次循環(huán)
		{
			BlinkSpeed = 0;
		}
	}
}
/* USER CODE END 4 */

程序解釋:

在外部中斷回調(diào)函數(shù)中對變量Blink ASpeed加1,并判斷BlinkSpeed的值是否等于3。如果等于3,則對BlinkSpeed清零,重新開始下一輪的循環(huán)。

運(yùn)行結(jié)果:

將程序編譯鏈接,生成可執(zhí)行代碼,通過ST-Link仿真器下載到開發(fā)板上可以觀察到:上電后,指示燈LED2按照2Hz頻率閃爍。按下按鍵B2后,指示燈LED2閃爍頻率加快,照10Hz頻率閃爍。再下按鍵B1后,示燈LED2閃爍頻率更快,按照20 Hz頻率閃爍。第三次按下按鍵后,指示燈恢復(fù)到2 Hz的閃爍頻率,并重復(fù)上述過程。文章來源地址http://www.zghlxwxcb.cn/news/detail-725333.html

到了這里,關(guān)于【學(xué)習(xí)記錄】STM32中斷進(jìn)階任務(wù):按鍵控制指示燈閃爍頻率的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【STM32】利用CubeMX對FreeRTOS用按鍵控制任務(wù)

    【STM32】利用CubeMX對FreeRTOS用按鍵控制任務(wù)

    對于FreeRTOS中的操作,最常用的就是創(chuàng)建、刪除、暫停和恢復(fù)任務(wù)。 此次實(shí)驗(yàn)?zāi)繕?biāo): 1.創(chuàng)建任務(wù)一:LED1每間隔1秒閃爍一次,并通過串口打印 2.創(chuàng)建任務(wù)二:LED2每間隔0.5秒閃爍一次,并通過串口打印 3.創(chuàng)建任務(wù)三:通過KEY1實(shí)現(xiàn)對任務(wù)一的創(chuàng)建和刪除。 按鍵按下以后如果有任

    2024年02月13日
    瀏覽(37)
  • STM32G030C8T6:使用按鍵控制LED亮滅(外部中斷)

    STM32G030C8T6:使用按鍵控制LED亮滅(外部中斷)

    本專欄記錄STM32開發(fā)各個功能的詳細(xì)過程,方便自己后續(xù)查看,當(dāng)然也供正在入門STM32單片機(jī)的兄弟們參考; 本小節(jié)的目標(biāo)是,系統(tǒng)主頻64 MHZ,采用高速外部晶振,通過KEY1 按鍵的PA0 引腳配置成中斷輸入引腳,PB9引腳配置成輸出,每次按鍵,PA0 引腳就會進(jìn)入一次外部中斷,每進(jìn)

    2024年02月05日
    瀏覽(25)
  • 基于STM32CubeMX與keil采用按鍵外部中斷方式控制LED與蜂鳴器

    基于STM32CubeMX與keil采用按鍵外部中斷方式控制LED與蜂鳴器

    這篇文章詳細(xì)記錄外部中斷方式控制LED的亮滅以及蜂鳴器的開關(guān);本文從原理圖開始到最后實(shí)現(xiàn)功能,內(nèi)容詳細(xì)。 本欄目的所有都是基于STM32F407ZET6芯片,博主采用的是普中的天馬F407開發(fā)板。 實(shí)現(xiàn)功能:LED0與LED1默認(rèn)熄滅,蜂鳴器默認(rèn)關(guān)閉。按下按鍵KEY0,控LED0亮滅;按下按

    2024年02月16日
    瀏覽(23)
  • 【STM32】STM32學(xué)習(xí)筆記-按鍵控制LED 光敏傳感器控制蜂鳴器(08)

    【STM32】STM32學(xué)習(xí)筆記-按鍵控制LED 光敏傳感器控制蜂鳴器(08)

    led.h led.c key.h key.c main.c 電路圖: 實(shí)物圖: buzzer.h buzzere.c lightsensor.h lightsensor.cpp main.c 04-Key控制LED.rar 05-光敏傳感器控制蜂鳴器.rar 參考: 【STM32】江科大STM32學(xué)習(xí)筆記匯總

    2024年04月23日
    瀏覽(30)
  • STM32—按鍵中斷

    STM32—按鍵中斷

    目錄 中斷簡介 程序 ?注: (1)???????? EXTI(外部中斷):EXTI是ST公司在其STM32產(chǎn)品上擴(kuò)展的外中斷控制。它負(fù)責(zé)管理映射到GPIO引腳上的外中斷和片內(nèi)幾個集成外設(shè)的中斷,以及軟件中斷。其輸出最終被映射到NVIC的相應(yīng)通道。因此,配置EXTI中斷的過程 必然包含對NVIC的配置

    2023年04月08日
    瀏覽(14)
  • 【STM32】外部中斷實(shí)現(xiàn)按鍵實(shí)驗(yàn)

    【STM32】外部中斷實(shí)現(xiàn)按鍵實(shí)驗(yàn)

    ??作者:一只大喵咪1201 ??專欄:《STM32學(xué)習(xí)》 ??格言: 你只管努力,剩下的交給時間! 在前面的文章控制LED和蜂鳴器的按鍵實(shí)驗(yàn)中詳細(xì)的講解了怎樣通過GPIO的輸入模式來控制LED燈和蜂鳴器的狀態(tài)。這篇文章同樣是實(shí)現(xiàn)上訴的功能,但是方式是采用外部中斷的方式實(shí)現(xiàn)的

    2024年02月05日
    瀏覽(17)
  • HAL庫STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))

    HAL庫STM32CUBEMX學(xué)習(xí)記錄(一)——USART(串口中斷收發(fā)數(shù)據(jù))

    一、首先使用STM32CUBEMX新建一個工程 二、打開工程文件 1.在usart.c中添加以下代碼 ?2.然后在最后面加入中斷回調(diào)函數(shù) 3.在usart.h文件中加入 ?4.新建一個cmd.c文件,創(chuàng)建命令check函數(shù) 5.在mian函數(shù)中的while(1)循環(huán)中調(diào)用USART1_Check(USART_RX_BUF)函數(shù) 6.最后串口初始化函數(shù)后打開串口中

    2024年02月16日
    瀏覽(28)
  • STM32HAL庫定時器中斷、按鍵中斷、串口中斷、按鍵消抖和低通濾波算法詳解

    本文將詳細(xì)介紹STM32HAL庫中的定時器中斷、按鍵中斷、串口中斷的使用方法,以及按鍵消抖和低通濾波算法的實(shí)現(xiàn)。希望能對您的STM32開發(fā)提供幫助。 目錄 1. 定時器中斷 2. 按鍵中斷 3. 串口中斷 4. 按鍵消抖 5. 低通濾波算法 一、定時器中斷 定時器中斷是STM32開發(fā)中常用的一種

    2024年02月15日
    瀏覽(26)
  • STM32MP157驅(qū)動開發(fā)——按鍵驅(qū)動(中斷)

    STM32MP157驅(qū)動開發(fā)——按鍵驅(qū)動(中斷)

    對于使用中斷的按鍵驅(qū)動,內(nèi)核自帶的驅(qū)動程序 drivers/input/keyboard/gpio_keys.c 就可以,需要做的只是修改設(shè)備樹指定引腳及鍵值 中斷是引入其他基礎(chǔ)知識的前提:休眠-喚醒、POLL 機(jī)制、異步通知、定時器、中斷的線程化處理都離不開中斷 設(shè)備樹相關(guān) 查看原理圖確定按鍵使用的

    2024年02月15日
    瀏覽(28)
  • STM32 | STM32F407ZE中斷、按鍵、燈(續(xù)第三天)

    STM32 | STM32F407ZE中斷、按鍵、燈(續(xù)第三天)

    上節(jié)回顧 STM32 | 庫函數(shù)與寄存器開發(fā)區(qū)別及LED等和按鍵源碼(第三天) 中斷概念 中斷是指計(jì)算機(jī)運(yùn)行過程中,出現(xiàn)某些意外情況需主機(jī)干預(yù)時,機(jī)器能自動停止正在運(yùn)行的程序并轉(zhuǎn)入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續(xù)運(yùn)行(面試題)。 STM32外部中斷需要

    2024年03月17日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包