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

发布时间:2024年01月24日


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

1. Arduino Uno(基于ATmega328P)

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

点亮LED的代码:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // 将内置LED设置为输出模式
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // 打开LED
  delay(1000); // 等待1秒(1000毫秒)
  digitalWrite(LED_BUILTIN, LOW); // 关闭LED
  delay(1000); // 再等待1秒
}

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

2. Raspberry Pi Pico(基于RP2040)

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

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

from machine import Pin
import utime

led = Pin(25, Pin.OUT) # Raspberry Pi Pico板上的内置LED连接到GPIO 25

while 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); // 初始化GPIO

  while (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通常连接到GPIO2

void 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的代码示例在长度上是相似的。

文章来源:https://blog.csdn.net/Mm66f/article/details/135829190
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。