STM32硬编程 - 介绍
关联知识
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
下一篇: 应用层协议小结