一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

stm32按鍵控制led燈亮滅

工程師鄧生 ? 來(lái)源:未知 ? 作者:劉芹 ? 2023-09-02 17:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

stm32按鍵控制led燈亮滅

嵌入式系統(tǒng)中,硬件按鍵常常被用作開(kāi)關(guān)輸入,控制LED燈亮滅。在STM32系列單片機(jī)中,有多種方式實(shí)現(xiàn)按鍵控制LED燈亮滅,我們將介紹其中一種較為簡(jiǎn)單的方法。

一、STM32開(kāi)發(fā)環(huán)境搭建

1. 軟件環(huán)境搭建

首先,需要在計(jì)算機(jī)中下載安裝Keil MDK開(kāi)發(fā)環(huán)境,以實(shí)現(xiàn)對(duì)STM32單片機(jī)的編寫、編譯、燒錄等操作。同時(shí),還需要下載對(duì)應(yīng)的STM32CubeMX軟件,用于生成代碼、初始化硬件等操作。

2. 硬件環(huán)境搭建

將STM32單片機(jī)與相應(yīng)的按鍵和LED燈連接。本實(shí)驗(yàn)使用的STM32是STM32F103C8T6,按鍵使用的是按鈕開(kāi)關(guān),LED燈使用的是紅色和藍(lán)色通用的LED燈。

二、STM32按鍵控制LED燈亮滅實(shí)驗(yàn)步驟

1. 打開(kāi)STM32CubeMX軟件,點(diǎn)擊File -> New Project,選擇STM32F103C8T6作為目標(biāo)設(shè)備,單擊OK。

2. 在生成的新項(xiàng)目中,選擇Pinout標(biāo)簽頁(yè),將按鍵和LED燈連接至對(duì)應(yīng)的引腳上。

3. 選擇Configuration標(biāo)簽頁(yè),配置GPIO引腳的工作模式。按鍵連接的GPIO引腳應(yīng)配置為輸入模式,LED燈連接的GPIO引腳應(yīng)配置為輸出模式。

4. 在Project Manager視圖中,選擇Project Manager -> Code Generator標(biāo)簽頁(yè),選擇Generate peripheral initialisation as a pair of .c/.h files選項(xiàng),并確保選中了Generate under Root選項(xiàng)。

5. 點(diǎn)擊Generate Code,生成HAL庫(kù)文件。

6. 打開(kāi)Keil MDK開(kāi)發(fā)環(huán)境,從文件菜單中選擇New Project,創(chuàng)建新的工程。在選擇設(shè)備的窗口中選擇STM32F103C8T6,確定后添加HAL庫(kù)文件到工程。

7. 編寫C語(yǔ)言程序,實(shí)現(xiàn)按鍵控制LED燈亮滅。程序中需要實(shí)現(xiàn)如下功能:

a. 初始化按鍵和LED燈的GPIO引腳。

b. 判斷按鍵當(dāng)前狀態(tài),如果按鍵處于按下?tīng)顟B(tài),則將LED燈的GPIO引腳置高,使LED燈亮;否則,將LED燈的GPIO引腳置低,使LED燈滅。

下面是具體的C語(yǔ)言程序示例:

```
#include "stm32f1xx_hal.h"

/* 定義按鍵GPIO引腳 */
#define KEY_PORT GPIOB
#define KEY_PIN GPIO_PIN_0

/* 定義LED燈GPIO引腳 */
#define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_1

/* 定義按鍵狀態(tài)標(biāo)志 */
uint8_t key_flag = 0;

/* 定義HAL庫(kù)句柄 */
GPIO_InitTypeDef GPIO_InitStruct;
TIM_HandleTypeDef htim2;

/* 初始化STM32的GPIO引腳 */
void GPIO_Init(void)
{
/* 使能GPIOB時(shí)鐘 */
__HAL_RCC_GPIOB_CLK_ENABLE();

/* 初始化按鍵GPIO引腳 */
GPIO_InitStruct.Pin = KEY_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(KEY_PORT, &GPIO_InitStruct);

/* 初始化LED燈GPIO引腳 */
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
}

/* 初始化STM32的定時(shí)器,以便在檢測(cè)按鍵時(shí)切換狀態(tài) */
void TIM2_Init(void)
{
/* 使能TIM2時(shí)鐘 */
__HAL_RCC_TIM2_CLK_ENABLE();

/* 初始化定時(shí)器中斷 */
HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);

/* 初始化定時(shí)器2 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7200-1; /* 分頻系數(shù) */
htim2.Init.Period = 500-1; /* 計(jì)數(shù)周期 */
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_Base_Init(&htim2);
HAL_TIM_Base_Start_IT(&htim2);
}

/* 檢測(cè)按鍵狀態(tài) */
void Key_Scan(void)
{
/* 判斷按鍵是否按下 */
if (HAL_GPIO_ReadPin(KEY_PORT, KEY_PIN) == GPIO_PIN_RESET) {
key_flag = 1;
} else {
key_flag = 0;
}
}

/* 控制LED燈亮滅 */
void LED_Control(void)
{
/* 根據(jù)按鍵狀態(tài)判斷LED燈的亮滅狀態(tài) */
if (key_flag == 1) {
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
} else {
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
}
}

/* 定時(shí)器調(diào)用函數(shù),每500ms檢測(cè)一次按鍵狀態(tài) */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == &htim2) {
Key_Scan();
LED_Control();
}
}

int main(void)
{
/* 初始化GPIO引腳 */
HAL_Init();
GPIO_Init();

/* 初始化定時(shí)器 */
TIM2_Init();

/* 等待事件發(fā)生 */
while (1) {
}

return 0;
}
```

三、STM32按鍵控制LED燈亮滅的運(yùn)行效果

編寫完成上述程序之后,將程序燒錄到STM32單片機(jī)中。當(dāng)按下按鍵時(shí),LED燈將亮起,否則LED燈將熄滅

四、總結(jié)

本實(shí)驗(yàn)簡(jiǎn)單介紹了STM32按鍵控制LED燈亮滅的原理和步驟。在實(shí)現(xiàn)過(guò)程中,需要注意初始化硬件的GPIO引腳的工作模式,以及編寫程序中對(duì)按鍵狀態(tài)的判斷和LED燈狀態(tài)的控制??梢酝ㄟ^(guò)添加定時(shí)器中斷等方式,實(shí)現(xiàn)對(duì)按鍵狀態(tài)的周期性檢測(cè)和LED燈的閃爍效果等功能,并根據(jù)具體的應(yīng)用場(chǎng)景來(lái)定制相應(yīng)的程序功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1596

    瀏覽量

    109749
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365038
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141791
  • 按鍵控制
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    8998
  • HAL庫(kù)
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    6948
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ZX8002D LED觸摸調(diào)光集成芯片數(shù)據(jù)手冊(cè)

    ZX8002D臺(tái)燈按鍵三檔調(diào)光IC芯片,單鍵調(diào)光IC輸入電壓2.5-5V,三檔亮度調(diào)節(jié),一路串輸出,一個(gè)按鍵控制。按鍵三檔亮度調(diào)節(jié)。多用于LED
    發(fā)表于 07-07 10:16 ?0次下載

    LED觸摸開(kāi)關(guān)調(diào)光調(diào)色溫電源控制原理方案

    、三段調(diào)光 模式4、雙路輸出:無(wú)亮度記憶、LED1LED2-LED1
    發(fā)表于 05-07 09:37

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】點(diǎn)燈實(shí)現(xiàn)6種LED花式流水燈操作

    _0, COT_LED_OFF); // 設(shè)置 cotLed_SetState(LED_1, COT_LED_OFF); // 設(shè)置
    發(fā)表于 04-28 21:28

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動(dòng)

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動(dòng)
    發(fā)表于 04-14 15:05 ?5次下載

    智慧城市新寵:LED桿顯示屏讓街道更更美

    智慧城市新寵:LED桿顯示屏讓街道更更美
    的頭像 發(fā)表于 03-21 08:26 ?289次閱讀

    盤古PGX-Lite 7K開(kāi)發(fā)板/PGC7KD-6IMBG256第一章——控制 LED 實(shí)驗(yàn)例程

    、數(shù)碼管、按鍵、led 等硬件資源,在提供用戶基礎(chǔ)的硬件環(huán)境 基礎(chǔ)上,滿足用戶更加靈活的需求。 二:實(shí)驗(yàn)?zāi)康?實(shí)現(xiàn)對(duì)多 LED
    發(fā)表于 02-19 11:53

    車輛監(jiān)測(cè)路燈自動(dòng)系統(tǒng) 智慧路燈

    車輛監(jiān)測(cè)路燈自動(dòng)系統(tǒng) 智慧路燈
    的頭像 發(fā)表于 11-05 11:42 ?630次閱讀
    車輛監(jiān)測(cè)路燈自動(dòng)<b class='flag-5'>亮</b><b class='flag-5'>滅</b>系統(tǒng) 智慧路燈

    智慧照明:實(shí)現(xiàn)“車來(lái),車走”的高效路燈解決方案

    智慧照明:實(shí)現(xiàn)“車來(lái),車走”的高效路燈解決方案
    的頭像 發(fā)表于 10-28 11:48 ?985次閱讀
    智慧照明:實(shí)現(xiàn)“車來(lái)<b class='flag-5'>燈</b><b class='flag-5'>亮</b>,車走<b class='flag-5'>燈</b><b class='flag-5'>滅</b>”的高效路燈解決方案

    雙色led突然一種顏色不的原因及解決辦法

    當(dāng)雙色LED突然一種顏色不時(shí),可能的原因有多種,以下是一些可能的原因及相應(yīng)的解決方法:
    的頭像 發(fā)表于 10-01 17:15 ?6785次閱讀

    自動(dòng)控制路燈的程序怎么寫

    編寫自動(dòng)控制路燈的程序涉及多個(gè)方面,包括硬件選擇、傳感器應(yīng)用、控制器編程等。以下是一個(gè)簡(jiǎn)化的程序編寫流程,以及可能的實(shí)現(xiàn)方式: 一、硬件選擇
    的頭像 發(fā)表于 09-21 11:25 ?1549次閱讀

    【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】通過(guò)按鍵控制LED

    點(diǎn)完了,來(lái)玩點(diǎn)花樣,通過(guò)按鍵來(lái)點(diǎn)燈。 硬件 還是看這個(gè)圖 按鍵有 BUTTON0(PB02)和BUTTON1(PB03) 軟件 這里基于blink_baremetal 工程進(jìn)行修改適配。 這里進(jìn)行GPIO的配置,配置好兩個(gè)
    發(fā)表于 09-01 17:21

    【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】Button &amp; LED

    有效。 LED: 可以看到,LED0和MCU的PA04連接,LED0為高電平時(shí)LED
    發(fā)表于 08-28 09:23

    TM4C129XNCZAD GPIO的PM4和PM5引腳分別接了兩個(gè)LED,PM5在燈之后寫0就不成功的原因?

    我現(xiàn)在使用了TM4C129XNCZAD這個(gè)芯片,GPIO的PM4和PM5引腳分別接了兩個(gè)LED,想通過(guò)對(duì)GPIO的寫0實(shí)現(xiàn),寫1實(shí)現(xiàn)
    發(fā)表于 08-20 06:05

    【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】7-按鍵點(diǎn)亮LED

    1介紹 之前已經(jīng)點(diǎn)亮LED,并能通過(guò)延時(shí)實(shí)現(xiàn)LED閃爍,這里實(shí)現(xiàn)通過(guò)按左鍵控制LED,按下
    發(fā)表于 08-03 14:54

    STM32 GPIO八種模式及工作原理詳解

    圍設(shè)備(像控制led按鍵控制,軟件模擬IIC等)直觀又簡(jiǎn)單的控制。 GPIO的8種模式 ?
    的頭像 發(fā)表于 07-22 09:32 ?8948次閱讀
    <b class='flag-5'>STM32</b> GPIO八種模式及工作原理詳解