STM32F103C8T6板子如何入手?

电器工程 微控制器 手臂 stm32
2022-01-23 10:16:04

几年来,我一直在使用 8 位 AVR MCU 与学生一起构建巡线机器人。现在我想升级到 ARM Cortex-M3,因为我想添加一些 CPU 密集型功能,例如里程计和传感器融合。

要求是:

  • 8个模拟输入,
  • 4个PWM输出,
  • 2 C,
  • 2个正交编码器输入,
  • 串行输入/输出,
  • 无需物理访问机器人即可进行无线自编程。
  • 多平台工具链 + IDE(OS X、Linux、Windows)。

到目前为止,我采取的步骤是:

我正在使用这个基于 STM32F103C8 的开发板。我相信这个 MCU 有我需要的一切,包括我计划在软件中实现的 2 x QEI,但是这个恰好有它在硬件中,太棒了:

我已经按照这个设置了我的工具链 + IDE:

我发现这个芯片的文档分散在许多我下载的 PDF 中:

我还下载了 STM32F10x 标准外设库,但这反过来又建议我获得更新的 STM32CubeF1,我认为这只是上述产品的营销重命名,所以我得到了两个:

最后,我还获得了 Joseph Yiu 撰写的“ARM Cortex-M3 权威指南”,我在等待开发板到达时正在阅读该指南。

我的问题是:

  1. 至少可以说,我对文档有点不知所措,我什至不确定我是否掌握了所有内容。例如,数据表和参考手册表明该芯片具有 3 个能够进行正交编码输入的定时器。但是,我在上面的 PDF 中的任何地方都找不到控制定时器的寄存器的文档。我错过了什么?

  2. 我应该使用(旧的?)标准外设库还是(新的?)立方体?有什么不同?我知道这两个库都使我免于直接操作寄存器,并且是推荐的方法。我对吗?

  3. 库的文档在哪里(除了嵌入的 doxygen 注释,这些注释很好,但我宁愿有一个可搜索的 html/pdf)?

  4. 我选择 Eclipse + GCC ARM + OpenOCD 作为我的工具链,因为我认为这是唯一可以在 3 个主要操作系统上运行而没有代码大小或其他限制的选项。还有更多选择吗?

1个回答
  1. 就数据表而言,它们确实存在分歧。《参考手册》是对整个MCU如何做事、配置和详细考虑的复杂描述。另一方面,“数据表”只是对 MCU 特性、引脚排列、封装等的简要描述。对于每个 STM32 系列 (F1,2...7)“STM32F7xxxx MCU 硬件开发入门”也有非常有用的文档,其中如果您想设计定制板,可为您提供许多信息。与 AVR 相比,寄存器描述有时会被放在特定章节的主要描述之外。

  2. STM32CubeMX 不是一个库,只是 ST 的一个有用程序,它使您能够设置管脚、其配置、设置系统时钟等,然后最后生成代码和整个项目。该项目可以专门为 Eclipse(STM32 的 System Workbench)生成,您只需在其中导入该项目即可开始使用。新库是 HAL(“硬件抽象层”)并尝试使用它。这是新事物,有时很难在 Internet 上找到示例,但不要教你的学生过时的技术。HAL 使用方便并且有文档,所以我认为它是更好的选择。

  3. 哪个图书馆?无论如何,我认为用谷歌搜索它们应该不是问题。

  4. 即使您只想使用一个操作系统(如 Windows),Eclipse(AC6 = STM32 的系统工作台)也是 - 我认为 - 最好的选择。例如 Keil 的 uVision 5——但那是非常糟糕的 IDE——它缺少 IDE 应该提供的大部分功能(折射、点击和搜索、正确的错误检查、查找参考等等)。所以,总而言之,Eclipse 几乎是 STM32 IDE 的唯一合理选择。