1.2 初识单片机

STM32系列单片机

一张图读懂单片机命名,本次培训使用的是最基础的STM32F103C8T6

拿到单片机后,最重要的是去搜索其==原理图==和所拥有的外设资源

https://blog.csdn.net/fantastic_sky/article/details/110229474

对于单片机的详细原理构成这里不做详细讲解,初学者只需知道单片机包含的外设资源就可(GPIO,USART,ADC...)

单片机的简单构成(这部分看不懂也没事)

  1. 核心处理器(CPU)
    • 采用32位数据总线和地址总线
    • 常见架构如ARM Cortex-M系列、RISC-V等
    • 具有更强大的运算能力和指令集
  2. 存储器
    • Flash存储器:用于存储程序代码,掉电不会丢失
    • SRAM:用于存储运行时数据,掉电时全部丢失
    • ROM:存储引导程序和基本配置
  3. 时钟系统
    • 主时钟(通常为外部晶振)单片机的心跳,每一次跳动都代表数据更新(新陈代谢)。
  4. 外设接口
    • GPIO(通用输入输出口)
    • UART/USART(串口通信)
    • SPI(串行外设接口)
    • I2C(双线串行接口)
    • ADC(模数转换器)
    • DAC(数模转换器)
    • USB接口
    • CAN总线接口等
  5. 中断控制器
    • 支持多级中断优先级
    • 向量中断控制
    • 快速中断响应

我们如何通过代码控制单片机

程序员通过C语言等高级语言,编写操作特定内存地址(这些地址就是寄存器的地址)的指令。这些指令被编译成机器码后,由单片机的CPU执行,从而改变寄存器中的值(0或1)。由于寄存器的每一位都与硬件功能(如引脚电平、定时器开关等)物理上关联,因此改变寄存器的值,就直接控制了单片机的硬件行为。

为了方便,芯片厂商通常会提供一个头文件(Header File),里面已经帮你把所有难记的寄存器地址都用好记的名字(如 GPIOA_ODR)定义好了。你只需要引入这个头文件,就可以直接使用这些名字,而不用去记那些复杂的十六进制地址了。这让编程变得更加简单和直观。

这个就是我们常说的库函数

库函数

常见的库函数包含标准库和HAL库(The hardware abstraction layer)

标准库

ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx.....之类的。在这些.c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。是学习STM32接触最多的一种开发方式,我们这次培训并不使用这类库,我也就不多阐述了。

HAL库

HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数。

而我们战队主要使用的是HAL库,主要看重其配置方便,而且RM中大多数电控资源也都是HAL库。

工作流程

Copyright © RM苍穹战队 all right reserved,powered by Gitbook该文件修订时间: 2025-11-05 23:11:58

results matching ""

    No results matching ""