欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

STM32硬编程 - 介绍

程序员文章站 2022-03-19 16:36:33
关联知识STM32FreeRTbianOSSTM32硬件本篇选择的器件是STMicroelectronics STM32F103C8T6。 该零件号是个大口子,让我们细分一下:STM32(意法半导体平台)F1(设备系列)03(设备家族的细分)C8T6(影响SRAM,闪存等的物理表现)就像平台名称所暗示的那样,这些设备基于32位路径,因此比8位设备功能强大得多。F103是STM32平台的一个分支(F1 03)。 该细分决定了设备的CPU和外围功能。最后,C8T6后缀进一步定义了设...

关联知识

STM32硬件

本篇选择的器件是STMicroelectronics STM32F103C8T6。 该零件号是个大口子,让我们细分一下:

  • STM32(意法半导体平台)
  • F1(设备系列)
  • 03(设备家族的细分)
  • C8T6(影响SRAM,闪存等的物理表现)

就像平台名称所暗示的那样,这些设备基于32位路径,因此比8位设备功能强大得多。

F103是STM32平台的一个分支(F1 03)。 该细分决定了设备的CPU和外围功能。

最后,C8T6后缀进一步定义了设备的功能,例如存储器容量和时钟速度。

选择此型号,考虑因素有:

  • 价格低廉
  • 货源充足
  • 高级功能
  • 构成因素

对于学生和业余爱好者来说,STM32F103C8T6可能仍然是花费很长时间探索ARM Cortex-M3平台的最低成本方式。 该设备随时可用,功能强大。 最终,小型PCB的外形尺寸允许将头板条焊接到边缘并插入面包板。 面包板是执行各种实验的最便捷方法。

图略

图.STM32F103C8T6 PCB(印刷电路板),带有焊接的排条

低成本还有另一个优势-例如,它允许您为涉及CAN通信的项目拥有多个设备。 本篇探讨了使用通过公共总线连接的三个设备进行的CAN通信。 低成本意味着不会被排除在学生预算之外。

考虑到其价格,STM32F103的外围支持简直是惊人的。 包括的外围设备包括: \

  • 4个16位GPIO端口(大多数为5伏耐压)
  • 3 x USART(通用同步/异步接收器/发射器)
  • 2个I2C控制器
  • 2个SPI控制器
  • 2个ADC(模拟数字转换器)
  • 2个DMA(直接内存地址控制器)
  • 4个定时器
  • 看门狗定时器
  • 1个USB控制器
  • 1个CAN控制器
  • 1个CRC生成器
  • 20K静态RAM
  • 64K(或128K)闪存
  • ARM Cortex M3 CPU,最大72MHz时钟

但是有一些限制。 例如,USB和CAN控制器不能同时运行。 其他外设可能会与所使用的I / O引脚冲突。大多数引脚冲突是通过AFIO(备用功能输入输出)配置进行管理的,从而允许将不同的引脚用于外围功能。

在外设配置中,可以单独启用几个独立的时钟以调整电源使用情况。 该MCU的先进功能使其适合研究。

闪存正式列出为64K字节,但您可能会发现它支持128K。

FreeRTOS介绍

与流行的AVR芯片系列(现在由Microchip拥有)不同,STM32F103系列具有足够的SRAM(静态RAM)来舒适地运行FreeRTOS。 可以访问RTOS(实时操作系统)具有多个优点,包括:

  • 抢先式多任务处理
  • 队列
  • 互斥量和信号量
  • 软件定时器

特别的优势是多任务处理能力。 这大大减轻了软件设计的负担。 使用状态机和事件循环模型会给许多高级Arduino项目带来负担。 每次循环时,软件都必须轮询事件是否已发生,并确定是否该采取某种措施。 这需要状态变量的管理,状态变量迅速变得复杂并导致编程错误。 相反,抢占式多任务提供了单独的控制任务,这些任务明确实现了其独立功能。 这是一种经过验证的软件抽象形式。

FreeRTOS提供了抢占式多任务处理功能,可自动在已配置的任务之间共享CPU时间。 但是,独立任务确实增加了它们之间安全交互的责任。 这就是为什么FreeRTOS还提供消息队列,信号量,互斥对象等来安全地对其进行管理的原因。

libopencm3介绍

开发用于MCU应用程序的代码可能会很苛刻。 挑战的一部分是利用平台的“裸机”进行开发。 这包括所有专用外设寄存器及其地址。 另外,许多外围设备都需要一定的配置,以使其可以使用。

这就是libopencm3所在的位置(来自libopencm3.org)。 它不仅为外设寄存器地址定义了存储器地址,而且还为所需的特殊常量定义了宏。 最后,该库包含用于与硬件外围资源进行交互的经过测试的C函数。 使用libopencm3使我们不必从头开始做所有这些事情。

详情参阅http://viadean.com/stm32_hardcode_intro.html

本文地址:https://blog.csdn.net/jiyotin/article/details/109635398

相关标签: 电子 STM32