当前位置: 首页 > backend >正文

【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.xdnf.cn/news/5536.html

相关文章:

  • 数字孪生概念
  • 本机的驱动
  • RoPE(旋转位置编码,参考:DeepSeek-V2)
  • Linux进程9-无名管道:1.概述、创建、读写数据、2.进程间通信、3.读写规律、4.fcntl设置阻塞、5.文件描述符概述及复制函数dup,dup2
  • Robot之VideoMimic:《Visual Imitation Enables Contextual Humanoid Control》翻译与解读
  • 安卓系统APP:志愿填报(基于Android平台的志愿填报程序)
  • LVGL环形加载器
  • Linux开机后启动Oracle数据库
  • redis数据结构-06(LRANGE、LINDEX、LSET、LREM)
  • 数字化工厂中央控制室驾驶舱系统架构文档
  • Transformer LLM
  • Linux数据库篇、第零章_MySQL30周年庆典活动
  • 关于chatshare.xyz激活码使用说明和渠道指南!
  • 3D虚拟工厂vue3+three.js
  • Babel 深度解析:现代 JavaScript 开发的桥梁
  • @RequestParam @RequestHeader @RequestBody 三者详解
  • 【英语笔记(四)】诠释所有16种英语时态,介绍每种时态下的动词变形!!含有所有时态的的动词变形汇总表格
  • C语言学习记录——深入理解指针(4)
  • 单片机-STM32部分:13、PWM
  • MongoDB
  • wget、curl 命令使用场景与命令实践
  • 数据并行基础概念知识
  • openai接口参数max_tokens改名max-completion-tokens?
  • 17前端项目----支付弹框
  • 10.二叉搜索树中第k小的元素(medium)
  • 用pymysql操作数据库
  • POST请求 、响应、requests库高级用法
  • 甜蜜聊天话术库
  • Go语言标识符
  • 嵌入式STM32学习——433M无线遥控灯