各款单片机点亮内置LED的入“坑“指南

目录

    • 1. Arduino Uno(基于ATmega328P)
      • 点亮LED的代码:
    • 2. Raspberry Pi Pico(基于RP2040)
      • 点亮LED的代码(使用MicroPython):
    • 3. STM32 Nucleo(基于多种STM32芯片)
      • 点亮LED的代码(使用C语言和STM32 HAL库):
    • 4. ESP32(基于ESP32芯片)
      • 点亮LED的代码(使用Arduino IDE):
    • 5.整理阶段
      • 快来排个名
      • 为哈Arduino Uno和ESP32 (Arduino IDE)的代码"短"
      • 为哈STM32又那么"长"

单片机(Microcontroller Unit, MCU)是一种集成了处理器核心、内存、输入/输出端口等多种功能于一体的微型计算机。几乎所有的单片机开发板都配备了至少一个内置的LED,通常用于简单的输出测试。本文将向您介绍几种流行的单片机如何点亮它们的内置LED。

1. Arduino Uno(基于ATmega328P)

Arduino是最受欢迎的单片机之一,特别适合初学者。它的编程环境友好,社区支持强大。

点亮LED的代码:

void setup() {pinMode(LED_BUILTIN, OUTPUT); // 将内置LED设置为输出模式
}void loop() {digitalWrite(LED_BUILTIN, HIGH); // 打开LEDdelay(1000); // 等待1秒(1000毫秒)digitalWrite(LED_BUILTIN, LOW); // 关闭LEDdelay(1000); // 再等待1秒
}

这段代码会使Arduino板上的内置LED每隔一秒闪烁一次。

2. Raspberry Pi Pico(基于RP2040)

Raspberry Pi Pico是一款性价比极高的单片机,基于Raspberry Pi自家的RP2040微控制器。

点亮LED的代码(使用MicroPython):

from machine import Pin
import utimeled = Pin(25, Pin.OUT) # Raspberry Pi Pico板上的内置LED连接到GPIO 25while True:led.toggle() # 切换LED的状态utime.sleep(1) # 等待1秒

这段代码将会使Pico上的内置LED每隔一秒切换一次状态。

3. STM32 Nucleo(基于多种STM32芯片)

STM32 Nucleo系列是STMicroelectronics推出的一系列开发板,支持多种STM32微控制器。

点亮LED的代码(使用C语言和STM32 HAL库):

#include "stm32f4xx_hal.h"int main(void) {HAL_Init(); // 初始化HAL库__HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = GPIO_PIN_5; // 假设内置LED连接到GPIOA的第5脚GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOwhile (1) {HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 切换GPIOA第5脚的状态HAL_Delay(1000); // 等待1秒}
}

这段代码会使STM32 Nucleo板上的内置LED每隔一秒闪烁一次。

4. ESP32(基于ESP32芯片)

ESP32是Espressif Systems推出的一款具有Wi-Fi和蓝牙功能的单片机。

点亮LED的代码(使用Arduino IDE):

#define LED_BUILTIN 2 // ESP32的内置LED通常连接到GPIO2void setup() {pinMode(LED_BUILTIN, OUTPUT);
}void loop() {digitalWrite(LED_BUILTIN, HIGH);delay(1000);digitalWrite(LED_BUILTIN, LOW);delay(1000);
}

这段代码会使ESP32板上的内置LED每隔一秒闪烁一次。

5.整理阶段

下面是根据代码行数(包括空行和注释)对上述提供的代码示例进行排名的表格。请注意,代码长度并不直接反映编程难度或单片机的性能,它仅仅是代码字符数量的一个度量。

单片机平台代码长度代码行数
Arduino Uno11
Raspberry Pi Pico (MicroPython)中等8
ESP32 (Arduino IDE)11
STM32 Nucleo19

这里的“代码长度”是基于行数的简单描述。STM32 Nucleo的代码示例最长,因为它包括了HAL库的初始化和配置代码。而Raspberry Pi Pico的代码示例较短,因为MicroPython提供了简洁的语法和高级的库函数。Arduino Uno和ESP32使用了Arduino IDE,所以代码长度相似,都是简洁的。

快来排个名

  1. Arduino Uno和ESP32 (Arduino IDE)
  2. Raspberry Pi Pico (MicroPython)
  3. STM32 Nucleo

为哈Arduino Uno和ESP32 (Arduino IDE)的代码"短"

Arduino Uno和ESP32的代码之所以被描述为“短”,是因为它们都使用了Arduino IDE进行编程,这个集成开发环境提供了许多内置的函数和简化的编程方式,使得代码编写更为简洁直观。在Arduino IDE中,许多底层的硬件细节都被抽象化了,开发者可以直接调用高级函数,而不需要像在某些其他平台那样编写复杂的配置代码。

例如,在Arduino和ESP32的代码示例中,我们看到了以下几点简化:

  1. pinMode()digitalWrite() 函数:这些函数提供了简单的接口来设置GPIO引脚的模式(输入或输出)和状态(高电平或低电平)。这些函数隐藏了配置GPIO寄存器的复杂性。

  2. LED_BUILTIN 宏:Arduino和ESP32都定义了这个宏,它提供了板上内置LED连接的GPIO引脚号。这意味着用户不需要查找具体的引脚号,可以直接使用这个宏。

  3. delay() 函数:这个函数提供了一个简单的方法来实现延时,无需编写定时器代码或其他复杂的等待机制。

为哈STM32又那么"长"

相比之下,像STM32这样的平台可能需要更多的初始化代码,包括配置时钟系统、初始化GPIO端口等,这些都会使得代码更长、更复杂。而在Arduino IDE中,这些都是自动处理的,开发者可以专注于实现具体的功能逻辑。因此,即使Arduino Uno和ESP32在硬件上有所不同,它们的基本闪烁LED的代码示例在长度上是相似的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[VulnHub靶机渗透] CTF7

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步…

PMP证书要怎么考,含金量怎么样?

PMP含金量更多的是“敲门砖”作用,公司招聘的门槛,现在坐项目的大部分都需要PMP/NPDP证书。 当然现在PMP管理模式也很热门,对企业发展很有利,各大企业都有引进改良应用在公司的项目上,之前在校友群里面大家在讨论PMP …

ESP8266模块WIFI功能Deauther及Evil-Twin实验过程

1.下载ESP8266Flasher及deauther2.1.0_1mb.bin这个固件 2.连接ESP8266模块到电脑 设备管理器可看到成功连接的ESP8266设备 3.开始刷入固件到ESP8266模块 运行ESP8266Flasher并点击Config选择固件: 配置高级选项: 点击Flash开始刷入固件,固件成功刷入如下: 按一下ESP8266模块…

操作系统导论-课后作业-ch14

1. 代码如下&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {int *i NULL;free(i);return 0; }执行结果如下&#xff1a; 可见&#xff0c;没有任何报错&#xff0c;执行完成。 2. 执行结果如下&#xff1a; 3. valgrind安装使用参考&a…

Java基础面试题-3day

Object Object类有哪些常见的方法 native 修饰符修饰的方法&#xff0c;表示这个方法我不实现&#xff0c;交给操作系统实现 getClass()&#xff1a;用于返回当前运行对象的class对象 hashCode()&#xff1a;返回对象的哈希值&#xff1b;一般用于Java的hashmap equals()&…

保姆级教程: GPTs接入广告到提现成功全过程真实记录

因为相信&#xff0c;所以看见 &#x1f31f; 1月19日&#xff0c;在AI社群首次了解到GPTs能通过接入广告获得收益。虽然对收益的多少和提现的可行性有所疑问&#xff0c;但我还是立刻在我的GPTs上尝试了这一功能。这一探索的旅程&#xff0c;如同跨入了一个未知的新世界。我的…

【江科大】STM32:旋转编码器接口

Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减从而指示编码器的位置、旋转方向和旋转速度 &#xff08;PWM就是通计时器计次达到测频率的目的&#xff0c;而…

【js大坑】苹果ios的日期时间兼容问题

苹果设备上的 JavaScript 日期兼容性问题通常是由于浏览器和操作系统版本之间的差异造成的 浏览器版本&#xff1a;不同的浏览器版本可能对 JavaScript 日期的支持程度不同。一些较旧的浏览器版本可能不支持某些日期方法或属性&#xff0c;导致日期操作出现错误。操作系统版本&…

电脑文件mfc140.dll丢失的解决方法指导,怎么快速修复mfc140.dll

mfc140.dll 文件的缺失是个普遍的问题&#xff0c;在日常使用中可能会时不时遇到。本文主要目的是详细介绍一旦遇到 mfc140.dll 文件缺失&#xff0c;应该如何进行下载和安装的步骤。不再赘言&#xff0c;下面就一起深入了解mfc140.dll丢失的解决方法指导。 一. mfc140.dll的作…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(三):性能优化策略

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第三部分:性能优化策略,子节点表示追问或同级提问 读写分离 分布式数据库的…

git 对象压缩及垃圾对象清理

git 对象压缩及垃圾对象清理 这篇文章让我们来看看 git 的对象压缩机制&#xff0c;前面的几篇文章我们提到&#xff0c;在执行 git add 命令会会把文件先通过 zlib 压缩后放入到「暂存区」&#xff0c;我们先看看这个步骤&#xff1a; 我们这个实例中有一个 1.28m 的 index.…

【数学】完全剩余系与费马小定理

完全剩余系 我们定义 a i ( 1 ≤ i ≤ n ) a_i(1\le i\le n) ai​(1≤i≤n) 为模 m m m 的完全剩余系当且仅当对于 1 ≤ i , j ≤ n 1\le i,j\le n 1≤i,j≤n 且 i ≠ j i\ne j ij&#xff0c;满足 a i ≢ a j ( m o d m ) a_i\not\equiv a_j\pmod m ai​≡aj​(mo…

短视频账号矩阵系统+无人直播系统源码技术开发

短视频账号矩阵系统无人直播系统源码技术开发涉及到多个领域&#xff0c;包括但不限于前端开发、后端开发、数据库设计、网络通信等。 以下是一些基本技术的步骤和注意事项&#xff1a; 1.技术需求分析设计&#xff1a;首先&#xff0c;需要明确开发短视频账号矩阵系统和无人直…

玩转k8s:yaml介绍

一.Yaml文件详解 1.Yaml文件格式 &#xff08;1&#xff09;Kubernetes 支持 YAML 和 JSON 格式管理资源对象 &#xff08;2&#xff09;JSON 格式&#xff1a;主要用于 api 接口之间消息的传递 &#xff08;3&#xff09;YAML 格式&#xff1a;用于配置和管理&#xff0c;…

Springboot+vue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的科研工作量管理系统的设计与实现&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的科研工作量管理系统的设计与实现…

python_ACM模式《剑指offer刷题》链表1

题目&#xff1a; 面试tips&#xff1a; 询问面试官是否可以改变链表结构 思路&#xff1a; 1. 翻转链表&#xff0c;再遍历链表打印。 2. 想要实现先遍历后输出&#xff0c;即先进后出&#xff0c;因此可借助栈结构。 3. 可用隐式的栈结构&#xff0c;递归来实现。 代码…

从复杂数据到直观洞察:山海鲸助你一臂之力

作为山海鲸可视化的开发者&#xff0c;我们深知在数据可视化领域的挑战与机遇。山海鲸可视化软件正是我们为应对这些挑战而打造的一款强大工具&#xff0c;旨在为用户提供更高效、更直观的数据呈现方式&#xff0c;本文单纯从数据可视化角度带大家了解一下我们这款软件的优势。…

Nginx问题分析

问题再现 分析问题&#xff1a; 就是通过http://182.44.16.68:8077/web-ui/static/js/chunk-libs.82635094.js 地址访问&#xff0c;找不到对应的js文件 首先确认文件在服务器的位置 发现这个目录下确实有这个js文件&#xff0c;那问题就在于http://182.44.16.68:8077/web-ui…

rabbitmq基础-java-4、Direct交换机

1、简介 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 2、特点 在Direct模型下&#xff1a; 队列与交换机的绑定&#xff0c;…

Linux网络 ---- PXE高效批量网络装机

目录 一、系统装机 1、系统装机方式 2、系统装机的三种引导方式 3、系统安装过程 二、PXE原理和概念 1、PXE概述 2、搭建PXE网络体系所需条件 3、PXE批量部署的优点 4、PXE通常涉及以下几个组件&#xff1a; 5、PXE实现过程详细 三、搭建过程 1、搭建过程服务详解 …