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

【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。

因此实验成功。

相关文章:

  • UGMathBench动态基准测试数据集发布 可评估语言模型数学推理能力
  • Linux架构篇、第三章_2_Linux服务器监控与NGINX优化
  • PureComponent与shouldComponentUpdate
  • X.509证书详解
  • Nginx location静态文件映射配置
  • C++23 新特性:深入解析 std::views::join_with(P2441R2)
  • 人工智能100问☞第20问:神经网络的基本原理是什么?
  • 探秘 DeerFlow:字节跳动开源的科研创作魔法盒!
  • python使用AES进行加密和解密
  • HTOL集成电路老化测试学习总结-20250510
  • k8s的节点是否能直接 curl Service 名称
  • 实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API
  • langchain 接入国内搜索api——百度AI搜索
  • Python-86:奇妙货币交易问题
  • 基于SpringBoot的在线教育管理系统
  • Qt 界面优化(绘图)
  • 计算机网络--2
  • 黑名单中的随机数-leetcode710
  • PostgreSQL 的 pg_column_size 函数
  • 用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解
  • 乌拉圭前总统何塞·穆希卡去世
  • “水运江苏”“航运浙江”,江浙两省为何都在发力内河航运?
  • 中共中央、国务院印发《生态环境保护督察工作条例》
  • 重庆三峡学院回应“中标价85万设备网购300元”:已终止采购
  • 技术派|巴基斯坦导弹:让印度保持克制的“定海神针”?
  • 巴基斯坦空袭印度多地空军基地,巴战机进入印领空