零基礎RT-thread第二節:按鍵控制

我這里依然使用的是野火開發板,F767芯片。
這一節寫一下按鍵控制LED亮滅。
在這里插入圖片描述
在這里插入圖片描述
這是按鍵以及LED的原理圖。
按鍵對應的引腳不按下時是低電平,按下后是高電平。
LED是在低電平點亮。
接下來是key.c:

/** Copyright (c) 2006-2021, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2025-06-13     c       the first version*/#include "key.h"/* 初始化按鍵引腳 */
void key_init(void)
{rt_pin_mode(KEY1_PIN, PIN_MODE_INPUT);rt_pin_mode(KEY2_PIN, PIN_MODE_INPUT);
}/* 獲取指定按鍵狀態 */
rt_bool_t key_state_get(rt_base_t pin)
{if(rt_pin_read(pin)){while(rt_pin_read(pin));return 1;}else {return 0;}
}

然后是key.h文件

/** Copyright (c) 2006-2021, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2025-06-13     c       the first version*/
#ifndef APPLICATIONS_KEY_H_
#define APPLICATIONS_KEY_H_#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>#define KEY1_PIN GET_PIN(A, 0)
#define KEY2_PIN GET_PIN(C, 13)void key_init(void);rt_bool_t key_state_get(rt_base_t pin);#endif /* APPLICATIONS_KEY_H_ */

最后是main.c文件:

// main.c
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <key.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>#define LED_R_PIN    GET_PIN(H, 10)  // PH10 (122)
#define LED_G_PIN    GET_PIN(H, 11)  // PH11 (123)
#define LED_B_PIN    GET_PIN(H, 12)  // PH12 (124)static rt_base_t led_r_stat = PIN_LOW;
static rt_base_t led_g_stat = PIN_HIGH;
static rt_base_t led_b_stat = PIN_HIGH;int main(void)
{LOG_I("System startup!");rt_pin_mode(LED_R_PIN, PIN_MODE_OUTPUT);rt_pin_mode(LED_G_PIN, PIN_MODE_OUTPUT);rt_pin_mode(LED_B_PIN, PIN_MODE_OUTPUT);rt_pin_write(LED_G_PIN, led_g_stat);rt_pin_write(LED_B_PIN, led_b_stat);while (1){if (key_state_get(KEY1_PIN)) {//key1控制紅燈 led_r_stat = (led_r_stat == PIN_LOW) ? PIN_HIGH : PIN_LOW;rt_pin_write(LED_R_PIN, led_r_stat);}if (key_state_get(KEY2_PIN)) {//key2控制綠燈led_g_stat = (led_g_stat == PIN_LOW) ? PIN_HIGH : PIN_LOW;rt_pin_write(LED_G_PIN, led_g_stat);}rt_thread_mdelay(500);}return RT_EOK;
}

這段代碼很簡單,但其實我在寫代碼時遇到了很多問題,按鍵一直不管用,LED也不能正常點亮。然后我胡亂調試,突然間就可以了 ,具體是什么原因也沒有找到,很可惜沒有發現到底問題出在哪里。

不管怎么說,實驗最后還是成功了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909487.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909487.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909487.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Gulp與SCSS:解構前端樣式開發的底層邏輯與實戰智慧》

探尋Gulp與SCSS協作的底層邏輯 Gulp&#xff0c;作為任務自動化的佼佼者&#xff0c;其核心價值在于將一系列復雜的任務&#xff0c;如文件的編譯、合并、壓縮等&#xff0c;以一種流暢且高效的方式串聯起來&#xff0c;形成一個自動化的工作流。它基于流&#xff08;stream&a…

OpenCV CUDA模塊圖像變形------對圖像進行GPU加速的透視變換函數warpPerspective()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于對圖像進行 GPU 加速的透視變換&#xff08;Perspective Transformation&#xff09;&#xff0c;是 cv::warpPerspective 的 CUDA 版…

吳恩達機器學習筆記(2)—單變量線性回歸

目錄 一、模型表示 二、代價函數 三、代價函數的直觀理解&#xff08;1&#xff09; 四、代價函數的直觀理解&#xff08;2&#xff09; 五、梯度下降 六、梯度下降的直觀理解 七、線性回歸的梯度下降 在本篇內容中&#xff0c;我們將介紹第一個機器學習算法——線性回歸…

最新華為 HCIP-Datacom(H12-821)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;&#xff0c;完整題庫請上方訪問&#xff0c;更新完畢。 在OSPF網絡中&#xff0c;NSSA區域與STUB區域都是為了減少LSA數量&#xff0c;兩者最主要的區別在于&#xff0c;NSSA區域可以引入外部路由&#xff0c;并同時接收OSPF…

vba學習系列(11)--批退率通過率等數據分析

系列文章目錄 文章目錄 系列文章目錄前言一、外觀報表1.產能2.固定傷排查3.鏡片不良TOP4.鏡片公式計算5.鏡片良率計算6.鏡片批退率7.鏡筒不良TOP8.鏡筒公式計算9.鏡筒良率計算10.鏡筒批退率 二、反射率報表1.機臺通過率2.鏡片通過率圈數分析3.鏡片通過率罩次分析4.鏡筒通過率圈…

成功在 Conda Python 2.7 環境中安裝 Clipper(eCLIP peak caller)

&#x1f52c; 成功在 Conda Python 2.7 環境中安裝 Clipper&#xff08;eCLIP peak caller&#xff09; 本文記錄了如何在無 root 權限下使用 Conda 環境&#xff0c;解決依賴、構建擴展模塊并成功安裝運行 clipper 的詳細流程。適用于再現 eCLIP 分析流程時遇到 clipper 安裝…

通過 VS Code 連接 GitLab 并上傳項目

通過 VS Code 連接 GitLab 并上傳項目&#xff0c;請按照以下步驟操作&#xff1a; 1. 安裝必要工具 確保已安裝 Git 并配置用戶名和郵箱&#xff1a; git config --global user.name "你的用戶名" git config --global user.email "你的郵箱" 在 VS Cod…

開源夜鶯支持MySQL數據源,更方便做業務指標監控了

夜鶯監控項目最核心的定位&#xff0c;是做一個告警引擎&#xff0c;支持多種數據源的告警。這個版本的更新主要是增加了對 MySQL 數據源的支持&#xff0c;進一步增強了夜鶯在業務指標監控方面的能力。 之前版本的夜鶯主要聚焦在 Prometheus、VictoriaMetrics、ElasticSearch…

SpringCloud + MybatisPlus:多租戶模式與實現

一、多租戶的基本概念 多租戶(Multi-Tenancy) 是指在一套軟件系統中,多個租戶(客戶)共享相同的基礎設施和應用程序,但數據和配置相互隔離的架構模式。其核心目標是 降低成本 和 保證數據安全。 核心特點: 資源共享:租戶共享服務器、數據庫、代碼等資源。數據隔離:通…

Kafka入門:解鎖核心組件,開啟消息隊列之旅

一、引言 Kafka以超高速吞吐、精準的路由策略和永不掉線的可靠性&#xff0c;讓海量數據在分布式系統中暢行無阻。無論你是剛接觸消息隊列的技術小白&#xff0c;還是尋求性能突破的開發老手&#xff0c;掌握 Kafka 核心組件的運作原理&#xff0c;都是解鎖高效數據處理的關鍵…

前端項目Excel數據導出同時出現中英文表頭錯亂情況解決方案。

文章目錄 前言一、Excel導出出現中英文情況。二、解決方案數據處理 三、效果展示總結 前言 在前端項目中實現Excel導出功能時&#xff0c;數據導出excel是常見的業務需求。但excel導出完表頭同時包含了中文和英文的bug&#xff0c;下面是我的經驗分享&#xff0c;應該可以幫助…

《開竅》讀書筆記8

51.學會贊美他人&#xff0c;能凈化心靈&#xff0c;建立良好人際關系&#xff0c;讓生活充滿陽光。 52.欣賞他人的學習過程&#xff0c;能激發潛能&#xff0c;促進相互成長&#xff0c;讓有點共存。 53.別因“自我”一葉障目&#xff0c;要關注他人&#xff0c;欣賞與別欣賞式…

基于 Spring Cloud Gateway + Sentinel 實現高并發限流保護機制

基于 Spring Cloud Gateway Sentinel 實現視頻播放接口限流保護機制 作者&#xff1a;NovaTube 開發者 &#xff5c; 時間&#xff1a;2025-06 標簽&#xff1a;Spring Cloud Gateway、Sentinel、微服務、限流、接口保護 一、背景介紹 在我們開發的在線視頻分享平臺 NovaTube…

CountDownLatch入門代碼解析

文章目錄 核心思想&#xff1a;火箭發射倒計時 &#x1f680;最簡單易懂的代碼示例代碼解析運行流程分析 核心思想&#xff1a;火箭發射倒計時 &#x1f680; 想象一下發射火箭的場景&#xff0c;在按下最終的發射按鈕之前&#xff0c;必須有好幾個系統同時完成自檢&#xff0…

用Python寫一個可視化大屏

用Python打造可視化大屏&#xff1a;數據洞察新視界 在當今數據爆炸的時代&#xff0c;數據可視化成為了理解和傳達復雜信息的關鍵工具。Python作為一門強大且靈活的編程語言&#xff0c;提供了豐富的庫和工具&#xff0c;讓我們能夠創建出令人驚嘆的可視化大屏。本文將帶你逐步…

20250611讓NanoPi NEO core開發板在Ubuntu core16.04系統下開機自啟動的時候拉高GPIOG8

rootNanoPi-NEO-Core:/# touch open_4g_ec20.sh rootNanoPi-NEO-Core:/# vi open_4g_ec20.sh 【打開使能引腳200 IOG8】 echo 200 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio200/direction echo 1 > /sys/class/gpio/gpio200/value 【切記&#xff1a…

解惑1、為何大容量電容濾低頻,小容量電容濾高頻

一、電容的種類&#xff1a; 鏈接&#xff1a; 二、疑惑 理論推算&#xff1a; 1&#xff09;Zc1/wc&#xff0c;那么大容量和小容量的電容&#xff0c;不應該都是 越高頻越阻抗低&#xff0c;越容易通過&#xff1f; 2&#xff09;大容量&#xff0c;積蓄電荷速度慢&#…

如何有效監控JVM環境,保障應用性能

緩慢的Java應用程序、意外崩潰和晦澀的內存問題——這些都是JVM可能在默默承受壓力的信號。JVM監控對于保障Java應用的正常運行時間和最佳性能至關重要&#xff0c;它提供了對Java虛擬機內存、線程和CPU資源使用情況的可見性&#xff0c;使管理員能夠在影響終端用戶之前識別性能…

python:PyQt5 開發一個郵件客戶端,能編寫郵件,發送郵件及附件

PyQt5 郵件客戶端 下面是一個簡潔高效的郵件客戶端實現&#xff0c;支持編寫郵件、添加附件和發送郵件功能&#xff1a; 編寫 eMailClient_qt.py 如下 # -*- coding: utf-8 -*- """ 用 PyQt5 開發一個郵件客戶端&#xff0c;能編寫郵件&#xff0c;發送郵件及…

React【回顧】 深層次面試詳解:函數式組件核心原理與高級優化

以下是對 React 深層次內容的全面解析,涵蓋函數式組件的核心原理、性能優化、設計模式和最新特性: ?? 一、React 核心機制剖析 1. Fiber 架構深解 Fiber 節點結構:function FiberNode(tag, pendingProps, key) {this.tag = tag; // 組件類型(函數組件=0, 類…