单片机(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 Uno | 短 | 11 |
Raspberry Pi Pico (MicroPython) | 中等 | 8 |
ESP32 (Arduino IDE) | 短 | 11 |
STM32 Nucleo | 长 | 19 |
这里的“代码长度”是基于行数的简单描述。STM32 Nucleo的代码示例最长,因为它包括了HAL库的初始化和配置代码。而Raspberry Pi Pico的代码示例较短,因为MicroPython提供了简洁的语法和高级的库函数。Arduino Uno和ESP32使用了Arduino IDE,所以代码长度相似,都是简洁的。
快来排个名
- Arduino Uno和ESP32 (Arduino IDE)
- Raspberry Pi Pico (MicroPython)
- STM32 Nucleo
为哈Arduino Uno和ESP32 (Arduino IDE)的代码"短"
Arduino Uno和ESP32的代码之所以被描述为“短”,是因为它们都使用了Arduino IDE进行编程,这个集成开发环境提供了许多内置的函数和简化的编程方式,使得代码编写更为简洁直观。在Arduino IDE中,许多底层的硬件细节都被抽象化了,开发者可以直接调用高级函数,而不需要像在某些其他平台那样编写复杂的配置代码。
例如,在Arduino和ESP32的代码示例中,我们看到了以下几点简化:
-
pinMode()
和digitalWrite()
函数:这些函数提供了简单的接口来设置GPIO引脚的模式(输入或输出)和状态(高电平或低电平)。这些函数隐藏了配置GPIO寄存器的复杂性。 -
LED_BUILTIN
宏:Arduino和ESP32都定义了这个宏,它提供了板上内置LED连接的GPIO引脚号。这意味着用户不需要查找具体的引脚号,可以直接使用这个宏。 -
delay()
函数:这个函数提供了一个简单的方法来实现延时,无需编写定时器代码或其他复杂的等待机制。文章来源:https://www.toymoban.com/news/detail-836515.html
为哈STM32又那么"长"
相比之下,像STM32这样的平台可能需要更多的初始化代码,包括配置时钟系统、初始化GPIO端口等,这些都会使得代码更长、更复杂。而在Arduino IDE中,这些都是自动处理的,开发者可以专注于实现具体的功能逻辑。因此,即使Arduino Uno和ESP32在硬件上有所不同,它们的基本闪烁LED的代码示例在长度上是相似的。文章来源地址https://www.toymoban.com/news/detail-836515.html
到了这里,关于各款单片机点亮内置LED的入“坑“指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!