首页 > 其他分享 >Arduino - Arduino/AVR/8051 和 ARM/STM32

Arduino - Arduino/AVR/8051 和 ARM/STM32

时间:2024-01-30 16:46:14浏览次数:26  
标签:8051 存储器 架构 Keil Arduino STM32CubeMX STM32 单片机

8051,AVR和ARM架构
8051
8051是由Intel于1980年代初推出的一款8位单片机。它的架构基于哈佛结构(分离的程序和数据存储器),并使用8位数据总线和16位地址总线。
8051内核是一个8位CISC(复杂指令集计算机)处理器,具有不同的寻址模式和指令。该内核具有四个寄存器组、两个16位计数器/定时器、一个串行接口(UART)、以及一些用于输入/输出(I/O)操作的特殊功能寄存器。
8051单片机适用于低功耗、低成本的应用场景,如家电控制、工业控制等。
AVR
AVR是由Atmel(现已被Microchip收购)推出的一款8位微控制器架构,基于哈佛结构,具有高性能和低功耗特点。ATmega单片机是AVR架构的一个例子。
AVR内核是一个8位RISC(精简指令集计算机)处理器,具有较少的寻址模式和指令。相较于8051单片机,AVR单片机的指令执行效率更高。
AVR单片机广泛应用于各种嵌入式系统,尤其是Arduino平台。它们适用于低功耗、低成本的应用场景,如家庭自动化、机器人等。
ARM
ARM是一种基于RISC的处理器架构,由ARM公司(现在是NVIDIA的一部分)设计。ARM架构包括多种不同的处理器核心,如Cortex-A、Cortex-R和Cortex-M系列。
STM32单片机是基于ARM Cortex-M系列核心的一款32位单片机。Cortex-M系列核心是32位RISC处理器,具有相对简单的指令集和寻址模式。
ARM单片机(如STM32)具有较高的性能、更多的外设和功能,适用于更复杂的应用场景,如无人机、物联网设备、高速通信等。

 

使用STM32CubeMX和Keil开发stm32程序的过程如下:

  1. 使用STM32CubeMX进行配置:在STM32CubeMX中选择相应的stm32型号,通过图形界面配置外设、时钟和引脚等。
  2. 生成初始化代码:在STM32CubeMX中,生成针对所选stm32型号的初始化代码和库函数。
  3. 导入到Keil:将STM32CubeMX生成的代码导入到Keil的项目中。
  4. 编写应用程序逻辑:在Keil中,编写应用程序的主要逻辑,例如实现LED闪烁、串口通信等功能。
  5. 编译、调试和烧录:使用Keil编译、调试和烧录程序,将程序运行在stm32微控制器上。
  6. 通过使用STM32CubeMX和Keil,可以更加高效地开发stm32程序,同时避免了手动编写底层驱动代码和配置代码的繁琐和错误。
//STM32CubeMX目录结构
Your_Project_Name/
│
├── Core/
│   ├── Inc/ (头文件目录,包括系统和用户头文件)
│   │   ├── main.h
│   │   ├── stm32f1xx_hal_conf.h
│   │   ├── stm32f1xx_it.h
│   │   └── ...
│   │
│   └── Src/ (源文件目录,包括系统和用户源文件)
│       ├── main.c
│       ├── stm32f1xx_hal_msp.c
│       ├── stm32f1xx_it.c
│       └── ...
│
├── Drivers/ (STM32 HAL库和CMSIS库文件)
│   ├── CMSIS/
│   └── STM32F1xx_HAL_Driver/
│
├── .mxproject (STM32CubeMX项目文件,可用于重新打开和修改配置)
├── Makefile (用于使用make命令进行编译的文件)
└── ...

Your_Project_Name/:项目根目录,所有项目文件和目录都在这个目录下。
Core/:项目核心代码目录,包括系统和用户代码。
Inc/:头文件目录,包括系统和用户头文件。
main.h:主函数头文件,包含系统和用户头文件,定义了主函数需要的所有函数和变量。
stm32f1xx_hal_conf.h:STM32Cube HAL库配置文件,包含STM32芯片的各种配置选项,例如时钟和中断配置等。
stm32f1xx_it.h:中断服务程序头文件,包含系统和用户中断服务程序的函数声明。
...:其他系统和用户头文件。


Src/:源文件目录,包括系统和用户源文件。
main.c:主函数源文件,包含系统初始化和主函数的实现代码。
stm32f1xx_hal_msp.c:STM32Cube HAL库中的系统初始化文件,包含系统时钟、GPIO、UART等外设的初始化代码。
stm32f1xx_it.c:中断服务程序源文件,包含系统和用户中断服务程序的实现代码。
...:其他系统和用户源文件。


Drivers/:STM32 HAL库和CMSIS库文件目录。
CMSIS/:ARM Cortex-M处理器的软件开发标准库。
STM32F1xx_HAL_Driver/:STM32Cube HAL库的驱动程序。


.mxproject:STM32CubeMX项目文件,包含项目的配置和生成信息,可用于重新打开和修改配置。
Makefile:用于使用make命令进行编译的文件,可以自动编译和链接所有源文件并生成可执行文件

ATmega和Arduino IDE

ATmega系列是Atmel公司(现已被Microchip收购)生产的一系列8位AVR微控制器,Arduino是一款基于ATmega微控制器的开源硬件平台。

Arduino IDE是一个用于开发Arduino程序的集成开发环境。与STM32CubeMX和Keil相比,Arduino IDE有以下区别:

  1. 开发环境:Arduino IDE提供了一个简单易用的集成开发环境,用于编写、编译和上传Arduino程序。Arduino IDE集成了基于ATmega微控制器的硬件配置、库函数和编译器等工具,不需要像STM32CubeMX和Keil那样分开使用。
  2. 语言和库:Arduino使用一种类似C++的语言,提供了丰富的库和示例代码,简化了硬件接口和外设驱动的开发。STM32CubeMX和Keil则使用标准的C或C++语言,需要使用STM32 HAL库进行硬件驱动开发。
  3. 面向的用户:Arduino旨在让初学者和非专业开发者更容易入门和使用,提供了丰富的教程和社区支持。而STM32CubeMX和Keil面向的是专业开发者,提供了更强大的功能和性能。

哈佛架构和冯·诺依曼架构

哈佛架构是一种将指令存储器和数据存储器分开的计算机处理器架构。在哈佛架构中,指令存储器和数据存储器分别使用不同的总线,可以独立读取数据。这种架构可以实现更高的程序执行速度和效率,但需要更多的硬件资源来实现。

对于一段C语言代码,如果采用哈佛架构,则程序和数据将分别存储在不同的存储器中,需要使用不同的总线进行读取。例如,对于一个嵌入式系统,程序代码可能存储在闪存中,而数据可能存储在RAM中,需要通过不同的总线进行读取。
冯·诺依曼架构是一种将指令存储器和数据存储器放在同一总线上的计算机处理器架构。在冯·诺依曼架构中,指令和数据使用同一种存储器,需要在不同的时间段进行读写操作。这种架构可以更灵活地使用存储器资源,但可能会导致数据读写速度较慢。

程序和数据将存储在同一块存储器中,需要在不同的时间段进行读写操作。例如,对于一台普通计算机,程序代码和数据都可以存储在内存中,通过内存总线进行读写操作。

 

标签:8051,存储器,架构,Keil,Arduino,STM32CubeMX,STM32,单片机
From: https://www.cnblogs.com/citrus/p/17997417

相关文章

  • Arduino - 使用ESP32-CAM
    简介准备工作:Arduino+ESP32-CAMdemo实现:使用ESP32-CAM实现拍照和视频流Arduino+ESP32开发环境搭建官网下载Arduinohttps://www.arduino.cc/en/software(建议不要下载beta版,可能会有问题)如果官网太慢可以在这里下载[Arduino中文社区-PoweredbyDiscuz!](https://www.a......
  • STM32CubeMX教程29 USB_HOST - 使用FatFs文件系统读写U盘
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板USB_OTG_FS为工作在MassStorageHostClass(大容量存储主机类)模......
  • 2_STM32F407ZGT6系列芯片学习2
    1linuxc语言基础 linux:相关命令 c:数据类型常量变量运算符输入输出控制语句数组和字符串指针函数 结构体内存管理makefile 数据结构:顺序表(线性表)链表栈队列二叉树排序查找 ARM初级开发:GPIO USART 中断 时钟 定时......
  • STM32F407ZGT6芯片及部分外设学习
    STM32:ST:意法半导体,是一个公司的名字32:32bit的意思,表示这是一个32bit的微控制器ARM:ARM是英国的芯片设计公司,其最成功的莫过于32位嵌入式CPU核--ARM系列,最常用的是ARM7和ARM9,    ARM公司主要提供IP(IntellectualPropertycore知识产权的......
  • STM32的汇编基础知识
    一、STM32F1内核基础知识1.Cortex-M3 内核结构STM32F1使用的是属于ARMv7-M架构的ARMCortex-M3内核,是一个32位的处理器内核,其内部的数据路径是32位的、寄存器是32位的以及存储器接口也是32位的。并且使用了哈佛结构,拥有独立的指令总线和数据总线为数字信号的处理提供了较高的性......
  • STM32CubeMX教程27 SDIO - 读写SD卡
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动逻辑分析仪nanoDLA野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板SDIO读写4线SD卡,实现轮询方式读写SD卡、以中......
  • STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板使用FatFs中间件通过SPI通信协议对W25Q128芯片进行读写等操作3......
  • Arduino库 <TFT_eSPI> 中文字库的制作与使用
    原文:Arduino库<TFT_eSPI>中文字库的制作与使用_anullpfontwaspassedtotextfont()-CSDN博客作者学习自以下博客,经过验证,并重新整理了步骤。https://www.cnblogs.com/deng1821333144/p/15307883.html#_label2如有需要,请访问原文章进行查看。目录一、TFT_eSPI基础配置二、字......
  • Эффективные методы отладки микроконтролле
    STM32—этосерия32-битныхмикроконтроллеровARMCortex-M,выпущеннаяSTMicroelectronics.ПриотладкемикроконтроллеровSTM32обычноиспользуютсяинструменты......
  • STM32CubeMX教程25 PWR 电源管理 - 睡眠、停止和待机模式
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板的PWR电源管理,并了解STM32的睡眠、停止和待机模式3、实验......