【RP2350】香瓜樹莓派RP2350之LED

本文最后修改時間:2025年05月10日 01:57

一、本節簡介

本節以樹莓派pico2開發板為例,舉例如何寫一個LED驅動加進工程里。

二、實驗平臺

1、硬件平臺

1)樹莓派pico2開發板

①樹莓派pico2開發板(作為仿真器)

②micro usb數據線

2)電腦

3)香瓜RP2350目標板

2、軟件平臺

1)VS CODE

三、版權聲明

1)作者:甜甜的大香瓜

2)聲明:喝水不忘挖井人,轉載請注明出處。

3)糾錯/業務合作:897503845@qq.com

4)香瓜嵌入式之樹莓派群:512598061

5)本文出處:原創連載資料《簡單粗暴學樹莓派》

6)完整開源資料下載地址(電腦端打開):

opengua.taobao.com

四、實驗前提

1、在進行本文步驟前,請先閱讀以下章節:

1)《簡單粗暴學樹莓派》的“第一章至第二章”章節?

2、在進行本文步驟前,請先實現以下章節:

1)《簡單粗暴學樹莓派》的《香瓜樹莓派RP2350之搭建開發環境(windows)》

2)《簡單粗暴學樹莓派》的《香瓜樹莓派RP2350之新建工程》

五、硬件原理

1、硬件連接

實際只接了4根線,3.3V、GND、CLK、DIO

注意: 給pico2供電時接VSYS,是因為pico2會再經過穩壓到3.3v供電給pico2目標板的rp2350。而香瓜使用的板子仿真接口是直接供電給rp2350的,所以需要直連3.3v。

2、原理圖

4個led拉高為亮、拉低為滅

六、實驗步驟

1、在VS CODE工程文件夾下,添加驅動GUA_Led.c(VS CODE會自動加載)

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

//name:???????? GUA_Led.c

//introduce:??? led驅動

//author:?????? opengua?????

//email:?????? ?897503845@qq.com??

//QQ group:???? 香瓜嵌入式之樹莓派群(512598061)

//shop:???????? opengua.taobao.com

//changetime:?? 2025.02.18

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

#include "pico/stdlib.h"

#include "GUA_Led.h"

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

//name:???????? GUA_Led_Init

//introduce:??? led初始化

//parameter:??? none

//return:?????? none

//author:?????? opengua

//email:??????? 897503845@qq.com

//QQ group:???? 香瓜嵌入式之樹莓派群(512598061)

//shop:? ???????opengua.taobao.com

//changetime:?? 2025.02.18

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

void GUA_Led_Init(void)

{

??? //先拉低,避免燈閃爍一下

??? LED1_BAT0_OUT_L;

??? LED2_BAT25_OUT_L;

??? LED3_BAT75_OUT_L;?

??? LED4_BAT100_OUT_L;

??? //GPIO22 0~25% 輸出

??? gpio_set_dir(LED1_BAT0_PIN, GPIO_OUT);

??? gpio_set_function(LED1_BAT0_PIN, GPIO_FUNC_SIO); ? ?

???

??? //GPIO23 25%~50% 輸出

??? gpio_set_dir(LED2_BAT25_PIN, GPIO_OUT);

??? gpio_set_function(LED2_BAT25_PIN, GPIO_FUNC_SIO);???

??? //GPIO24 50~75% 輸出??

??? gpio_set_dir(LED3_BAT75_PIN, GPIO_OUT);

??? gpio_set_function(LED3_BAT75_PIN, GPIO_FUNC_SIO); ???????????

??? //GPIO25 75~100% 輸出

??? gpio_set_dir(LED4_BAT100_PIN, GPIO_OUT);

??? gpio_set_function(LED4_BAT100_PIN, GPIO_FUNC_SIO); ??

}

2、在VS CODE工程文件夾下,添加驅動GUA_Led.h(VS CODE會自動加載)

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

//name:???????? GUA_Led.h

//introduce:??? led驅動的頭文件

//author:?????? opengua????

//email:??????? 897503845@qq.com??

//QQ group:???? 香瓜嵌入式之樹莓派群(512598061)

//shop:???????? opengua.taobao.com

//changetime:?? 2025.02.18

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

#ifndef _GUA_LED_H_

#define _GUA_LED_H_

/*********************宏定義************************/

//LED宏

#define LED1_BAT0_PIN????? 22

#define LED1_BAT0_OUT_H??? gpio_put(LED1_BAT0_PIN, true);

#define LED1_BAT0_OUT_L??? gpio_put(LED1_BAT0_PIN, false);

#define LED2_BAT25_PIN???? 23

#define LED2_BAT25_OUT_H?? gpio_put(LED2_BAT25_PIN, true);

#define LED2_BAT25_OUT_L?? gpio_put(LED2_BAT25_PIN, false);

#define LED3_BAT75_PIN???? 24

#define LED3_BAT75_OUT_H?? gpio_put(LED3_BAT75_PIN, true);

#define LED3_BAT75_OUT_L?? gpio_put(LED3_BAT75_PIN, false);

#define LED4_BAT100_PIN??? 25

#define LED4_BAT100_OUT_H? gpio_put(LED4_BAT100_PIN, true);

#define LED4_BAT100_OUT_L? gpio_put(LED4_BAT100_PIN, false);

/*********************外部函數聲明************************/

extern void GUA_Led_Init(void);

#endif

3、添加對應驅動文件名稱

4、在應用層中調用

1)添加驅動頭文件(main.c中)

#include "GUA_Led.h"

2)添加驅動初始化代碼(main.c的main函數中)

??? //初始化LED

??? GUA_Led_Init();

3)添加測試代碼(main.c的main函數中)

??????? //拉高

??????? LED1_BAT0_OUT_H;

??????? sleep_ms(1000);

??????? LED2_BAT25_OUT_H;

??????? sleep_ms(1000);

??????? LED3_BAT75_OUT_H;

??????? sleep_ms(1000);

??????? LED4_BAT100_OUT_H;?

??????? sleep_ms(1000);

??????? //拉低

??????? LED1_BAT0_OUT_L;

??????? sleep_ms(1000);

??????? LED2_BAT25_OUT_L;

??????? sleep_ms(1000);

??????? LED3_BAT75_OUT_L;

??????? sleep_ms(1000);

??????? LED4_BAT100_OUT_L;?

??????? sleep_ms(1000);

七、實驗結果

編譯并仿真,全速運行下可看到每隔1秒從LED1亮到LED4,再從LED1滅到LED4。

因此實驗成功。

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

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

相關文章

機器人運動控制原理淺析-UC Berkeley超視覺模態模型

加州伯克利發布的超視覺多感知模態融合(FuSe, Fuse Heterogeneous Sensory Data)模型,基于視覺、觸覺、聽覺、本體及語言等模態,利用自然語言跨模態對齊(Cross-Modal Grounding)優調視覺語言動作等通用模型,提高模型任務成功率。 總體框架 …

【Bootstrap V4系列】學習入門教程之 組件-媒體對象(Media object)

Bootstrap V4系列 學習入門教程之 組件-媒體對象(Media object) 媒體對象(Media object)一、Example二、Nesting 嵌套三、Alignment 對齊四、Order 順序五、Media list 媒體列表 媒體對象(Media object) B…

解決VirtualBox中虛擬機(ubuntu)與主機(windows)之間互相復制粘貼(文本)

一.開始的設置 1.在VirtualBox中打開設置,常規中修改主機與虛擬機交互設置 2.虛擬機關閉狀態下,存儲中選中控制器SATA,勾選‘使用主機輸入輸出’ 3.選中操作系統對應的虛擬文件,.vdi文件,勾選右邊的固態驅動器。 4.啟…

java 多核,多線程,分布式 并發編程的現狀 :從本身的jdk ,到 spring ,到其它第三方。

Java 在多核、多線程和高性能編程領域提供了豐富的現成框架和工具,既有標準庫中的并發組件,也有第三方框架。以下是一些關鍵框架及其應用場景的總結:便于后面我們站在巨人的肩膀上,繼續前行 一、Java 標準庫中的多線程框架 Execut…

Nodejs核心機制

文章目錄 前言 前言 結合 Node.js 的核心機制進行說明: 解釋事件循環的各個階段。 答案 Node.js 事件循環分為 6 個階段,按順序執行: Timers:執行 setTimeout 和 setInterval 的回調。 Pending I/O Callbacks:處理系…

C++筆記6:數字字面量后綴和前綴總結

在C中,可以在數字字面量后面添加字母后綴(或前綴)來表示特定的數據類型。這些后綴能夠明確指定字面量的類型,避免類型轉換帶來的潛在問題。以下是常見的幾種類型后綴及其含義: 1. 整數后綴 u 或 U:表示 u…

50.輻射抗擾RS和傳導抗擾CS測試環境和干擾特征分析

輻射抗擾RS和傳到抗擾CS測試環境和干擾特征分析 1. 輻射抗擾RS2. 傳導抗擾CS 1. 輻射抗擾RS 輻射抗擾RS考察對外界電磁場干擾得抗擾能力,測試頻段為80MHz~2000MHz,用1KHz得正弦波進行調幅,在電波暗室內進行。測試標準:IEC 61000-…

Java多態詳解

Java多態詳解 什么是多態? 比如我們說:“駕駛一輛車”,有人開的是自行車,有人開的是摩托車,有人開的是汽車。雖然我們都說“開車”,但“怎么開”是由具體的車類型決定的:“開”是統一的動作&a…

問題及解決01-面板無法隨著窗口的放大而放大

在MATLAB的App Designer中,默認情況下,組件的位置是固定的,不會隨著父容器的大小變化而改變。問題圖如下圖所示。 解決: 為了讓Panel面板能夠隨著UIFigure父容器一起縮放,需要使用布局管理器,我利用 MATLA…

【GESP真題解析】第 20 集 GESP 二級 2025 年 3 月編程題 2:時間跨越

大家好,我是莫小特。 這篇文章給大家分享 GESP 二級 2025 年 3 月編程題第 2 題:時間跨越。 題目鏈接 洛谷鏈接:B4260 時間跨越 一、完成輸入 根據題意,輸入包含五行,每行一個正整數,分別代表 y,m,d,h,k。 注意到數據范圍:對于全部數據,保證有 2000≤y≤3000,1≤m≤…

GTS-400 系列運動控制器板卡介紹(二十一)---電子齒輪跟隨

運動控制器函數庫的使用 運動控制器驅動程序、dll 文件、例程、Demo 等相關文件請通過固高科技官網下載,網 址為:www.googoltech.com.cn/pro_view-3.html 1 Windows 系統下動態鏈接庫的使用 在 Windows 系統下使用運動控制器,首先要安裝驅動程序。在安裝前需要提前下載運動…

軟件工程之需求分析涉及的圖與工具

需求分析與規格說明書是一項十分艱巨復雜的工作。用戶與分析員之間需要溝通的內容非常的多,在雙方交流信息的過程中很容易出現誤解或遺漏,也可能存在二義性。如何才能更加準確的表達雙方的意思,且清楚明了,繪制各類圖形就顯得非常…

藍橋杯14屆 數三角

問題描述 小明在二維坐標系中放置了 n 個點,他想在其中選出一個包含三個點的子集,這三個點能組成三角形。然而這樣的方案太多了,他決定只選擇那些可以組成等腰三角形的方案。請幫他計算出一共有多少種選法可以組成等腰三角形? 輸…

在Fiddler中添加自定義HTTP方法列并高亮顯示

在Fiddler中添加自定義HTTP方法列并高亮顯示 Fiddler 是一款強大的 Web 調試代理工具,允許開發者檢查和操作 HTTP 流量。一個常見需求是自定義 Web Sessions 列表,添加顯示 HTTP 方法(GET、POST 等)的列,并通過顏色區…

數據庫分庫分表實戰指南:從原理到落地

1. 為什么要分庫分表? 1.1 單庫瓶頸表現 存儲瓶頸:單表數據超過5000萬行,查詢性能急劇下降性能瓶頸:單庫QPS超過5000后響應延遲顯著增加可用性風險:單點故障導致全系統不可用 1.2 突破性優勢 --------------------…

Selenium的driver.get_url 和 手動輸入網址, 并點擊的操作,有什么不同?

我在搞爬取的時候,發現有些網站直接用driver.get(url) 跳轉到目標特定的網址的時候,會被強制跳轉到其他的網址上,但是如果是自己手動,在網址欄那里輸入網址,并點回車,卻能完成跳轉。 這是在使用 Selenium …

Java【06】數組查找(二分查找)、排序(冒泡排序、簡單選擇排序)

1. 數組的操作 1.1 數組的反轉 int[] arrs{3,5,7,8,9}; 編寫程序,讓arrs中的數據進行反轉{9,8,7,5,3} 1.2數組的查找 ① 順序查找 從頭到尾一個一個的找! ② 二分查找 對數組有一個要求:數組必須是有序(大小)的! int num3; int[]…

Redis 基礎詳解:從入門到精通

在當今互聯網應用開發領域,數據存儲與處理的性能和效率至關重要。Redis(Remote Dictionary Server)作為一款開源的、基于內存的鍵值存儲系統,憑借其出色的性能和豐富的功能,被廣泛應用于數據庫、緩存、消息中間件等場景…

圖片轉ICO圖標工具

圖片轉ICO圖標 可批量操作 下載地址: 鏈接:https://pan.quark.cn/s/6312c565ec98 這個工具是一個批量圖片轉ICO圖標的神器,有了它,以后再也不用為ICO格式的轉換煩惱!而且這個軟件特別小巧,完全不用安裝。…

0基礎 | L298N電機驅動模塊 | 使用指南

引言 在嵌入式系統開發中,電機驅動是一個常見且重要的功能。L298N是一款高電壓、大電流電機驅動芯片,廣泛應用于各種電機控制場景,如直流電機的正反轉、調速,以及步進電機的驅動等。本文將詳細介紹如何使用51單片機來控制L298N電…