5 嵌入式系统硬件之常用微控制器
系列进度
嵌入式系统入门 · 第 5 / 18 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
嵌入式系统学习要把硬件限制、软件任务、外设接口和运行稳定性一起看。阅读时可以按「常用微控制器类型 -> 微控制器的选择 -> 实际应用案例 -> 智能家居控制系统」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「常用微控制器类型」,再查「微控制器的选择」。
在嵌入式系统中,微控制器(Microcontroller, MCU)是核心组件之一,它负责控制和执行特定的任务。继上一篇关于微控制器概述的内容后,本篇将深入探讨常用的微控制器及其特性、应用场景,以及在嵌入式开发中的具体案例。
常用微控制器类型
微控制器种类繁多,以下是一些常见的微控制器类型及其特点:
选择常用微控制器时,先看主频、内存、接口数量、功耗、开发生态、价格和后续维护。
-
8051 系列微控制器
- 经典的8位微控制器架构,适用于低功耗和低成本的应用。
- 应用场景:简单的控制系统、家用电器、工业控制。
// 控制LED的简单示例代码 #include <REGX51.H> void delay(unsigned int time) { while (time--); } void main() { while (1) { P1 = 0xFF; // 开启LED delay(1000); P1 = 0x00; // 关闭LED delay(1000); } } -
PIC 微控制器
- 由Microchip公司开发,分为8位、16位和32位系列,适合各种应用需求。
- 应用场景:智能家居设备、汽车电子和工业自动化。
#include <xc.h> void main(void) { TRISB = 0; // 设置端口B为输出 while (1) { PORTB = 0xFF; // 开启LED __delay_ms(500); PORTB = 0x00; // 关闭LED __delay_ms(500); } } -
AVR 微控制器
- 由Atmel(现为Microchip的一部分)开发,广泛应用于Arduino平台,易于编程和开发。
- 应用场景:教育项目、快速原型开发。
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB = 0xFF; // 设置端口B为输出
while (1) {
PORTB = 0xFF; // 开启LED
_delay_ms(500);
PORTB = 0x00; // 关闭LED
_delay_ms(500);
}
}
ARM Cortex-M 微控制器
- 采用ARM架构,具有更高的性能和低功耗特性,适用于要求较高的嵌入式应用。
- 应用场景:物联网设备、医疗设备、工业控制系统。
#include "stm32f4xx.h"
void delay(uint32_t time) {
for (uint32_t i = 0; i < time; i++);
}
int main(void) {
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // 使能GPIOA时钟
GPIOA->MODER |= (1 << 10); // 设置PA5为输出
while (1) {
GPIOA->ODR ^= (1 << 5); // 切换PA5的状态
delay(1000000);
}
}
微控制器的选择
选择适合的微控制器需要考虑以下几个因素:
读《嵌入式系统硬件之常用微控制器》时,可以先看配图里的任务、概念、练习和判断点,再回到正文补细节。这样更容易判断这篇内容能放到哪个真实场景里。
- 处理能力:根据项目需求选择合适的位数(8位、16位、32位)。
- 内存:RAM和Flash的容量要足够,满足程序运行和数据存储。
- 外设接口:根据应用选择具有适当接口(如GPIO、PWM、ADC等)的微控制器。
- 功耗:对于电池供电的设备,选择低功耗微控制器至关重要。
实际应用案例
智能家居控制系统
假设我们要构建一个简单的智能家居控制系统,通过Wi-Fi连接微控制器,让用户能够远程控制家中灯光。这里我们可以选择基于ESP8266的微控制器。例如,使用Arduino IDE编写控制代码:
#include <ESP8266WiFi.h>
const char* ssid = "your_SSID"; // 用户的Wi-Fi SSID
const char* password = "your_PASSWORD"; // 用户的Wi-Fi密码
WiFiServer server(80);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
server.begin();
Serial.println("WiFi connected.");
}
void loop() {
WiFiClient client = server.available();
if (client) {
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// 控制灯光
if (request.indexOf("/lamp/on") != -1) {
digitalWrite(LED_BUILTIN, LOW); // 开灯
}
if (request.indexOf("/lamp/off") != -1) {
digitalWrite(LED_BUILTIN, HIGH); // 关灯
}
// 返回响应
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.println("<html><body><h1>灯光控制</h1>");
client.println("<a href=\"/lamp/on\">开启灯光</a><br>");
client.println("<a href=\"/lamp/off\">关闭灯光</a><br>");
client.println("</body></html>");
client.stop();
}
}
在这个案例中,用户通过网页点击链接,可以控制灯光的开关。
复习《嵌入式系统硬件之常用微控制器》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《嵌入式系统硬件之常用微控制器》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
总结
微控制器在嵌入式系统中扮演着至关重要的角色。通过合理选择微控制器及其编程,可以构建丰富多彩的应用场景。在下一篇教程中,我们将探讨嵌入式系统硬件的外部设备接口,包括如何与传感器和致动器进行通信,以提升嵌入式系统的功能与交互性。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
嵌入式系统硬件之常用微控制器适合谁读?
这是 嵌入式系统入门 系列第 5 / 18 篇,适合正在学习嵌入式系统入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇嵌入式系统入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读