兜兜零元 发表于 2025-1-11 06:37:54

51单片机 和 STM32 在硬件操作上的差异

51单片机 和 STM32 在硬件操作上的差异

1. 时钟系统的差异

STM32 的时钟系统

STM32 的时钟系统非常复杂,支持多种时钟源(如内部晶振、外部晶振、PLL 等),并且每个外设(如 GPIO、定时器、串口等)都有独立的时钟开关。因此,在使用任何外设之前,必须启用其时钟。


[*]为什么需要启用时钟?

[*]STM32 的外设默认是关闭的,以节省功耗。
[*]时钟是硬件工作的基础,没偶然钟,硬件无法运行。

51单片机的时钟系统

51单片机的时钟系统非常简单,通常只有一个时钟源(如外部晶振或内部振荡器),并且所有外设共享同一个时钟。因此,51单片机不需要手动启用外设时钟。


[*]为什么不需要启用时钟?

[*]51单片机的时钟是全局的,所有外设默认都使用同一个时钟。
[*]硬件资源较少,没有复杂的时钟管理需求。

2. 外设配置的差异

STM32 的外设配置

STM32 的外设功能非常丰富,每个外设都有多种工作模式(如 GPIO 可以配置为输入、输出、复用功能等)。为了灵活配置这些外设,STM32 使用告终构体来存储配置参数,并通过初始化函数将配置应用到硬件。


[*]为什么需要配置结构体?

[*]STM32 的外设功能复杂,需要通过结构体灵活配置。
[*]结构体可以存储多个参数,方便统一管理。

51单片机的外设配置

51单片机的外设功能非常简单,通常只需要直接操作寄存器即可。比方,配置 GPIO 时,只需要设置对应的寄存器位。


[*]为什么不需要配置结构体?

[*]51单片机的外设功能单一,配置简单。
[*]直接操作寄存器即可完成配置,不需要额外的结构体和初始化函数。

3. 硬件资源的差异

STM32 的硬件资源

STM32 的硬件资源非常丰富,支持多种外设(如 GPIO、定时器、串口、ADC、DAC 等),并且每个外设都有独立的控制寄存器。为了管理这些资源,STM32 使用了复杂的库函数和结构体。


[*]为什么需要初始化硬件?

[*]STM32 的外设功能复杂,初始化过程需要配置多个寄存器。
[*]初始化函数将配置参数应用到硬件,确保硬件按照预期工作。

51单片机的硬件资源

51单片机的硬件资源较少,通常只有基本的 GPIO、定时器、串口等外设,且控制寄存器非常简单。因此,51单片机不需要复杂的初始化过程。


[*]为什么不需要初始化硬件?

[*]51单片机的硬件功能简单,配置过程直接通过寄存器完成。
[*]没有复杂的初始化需求。

4. 代码示例对比

STM32 的 GPIO 配置

// 1. 启用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

// 2. 配置结构体
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;         // 引脚 5
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度 50MHz

// 3. 初始化硬件
GPIO_Init(GPIOA, &GPIO_InitStructure);
51单片机的 GPIO 配置

sbit LED = P1^0;// 定义 LED 引脚为 P1.0

void main()
{
    LED = 0;// 直接操作寄存器,点亮 LED
}
5. 总结:为什么 51 单片机不需要“三步走”?


[*]时钟系统简单:51单片机的时钟是全局的,所有外设共享同一个时钟,不需要手动启用。
[*]外设功能单一:51单片机的外设功能简单,直接操作寄存器即可完成配置。
[*]硬件资源有限:51单片机的硬件资源较少,没有复杂的初始化需求。
相比之下,STM32 的硬件资源丰富、外设功能复杂,因此需要通过“三步走”来管理时钟、配置参数和初始化硬件。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 51单片机 和 STM32 在硬件操作上的差异