如何从STM32F103C8T6板开始?


10

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

要求是:

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

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

我正在使用基于STM32F103C8的电路板。我相信该MCU具有我所需的一切,包括我计划在软件中实现的2 x QEI,但是这个恰好在硬件中具有,所以很棒:

我遵循此步骤来设置我的工具链+ IDE:

我发现该芯片的文档分散在许多PDF中,这些PDF是我下载的:

我还下载了STM32F10x标准外围设备库,但这反过来又建议我购买较新的STM32CubeF1,我相信这只是上述产品的市场重命名,因此我同时获得了两者:

最后,我还收到了Joseph Yiu撰写的“ ARM Cortex-M3权威指南”,我在等这些板到达时正在阅读。

我的问题是:

  1. 至少可以说,我对文档有点不知所措,而且我甚至不确定我是否掌握了全部内容。例如,数据表和参考手册指出该芯片具有3个能够正交编码输入的定时器。但是,我无法在上述PDF的任何地方找到控制定时器的寄存器的文档。我想念什么?

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

  3. 库的文档在哪里(除了嵌入式doxygen注释之外,这些注释很好,除了我自己,我宁愿拥有可搜索的html / pdf)?

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


2
《参考手册》的第324页包含使用TIM1和TIM8的编码器接口的详细信息。
Leon Heller

1
我可以建议嵌入式系统-塑造世界 ARM-Cortex-M3,但它来自TI。另外,我能够为ubuntu配置Eclipse + GCC ARM + OpenOCD,这很繁琐,而且至少对我来说并不太可靠。
Mahendra Gunawardena 2015年

1
通常,ARM-gcc解决方案非常稳定,并且是其中最可移植的选项。重点往往更倾向于由Makefile驱动的构建或构建自动化,因此与现有组织软件开发实践的集成非常出色。使用哪种IDE(如果有的话)进行编辑并驱动实验构建往往是一个更加个人的决定,并且不一定会花很多的工具开发精力。就个人而言,我要处理的最后一件事是目标/工具链,它假定我将更改IDE以使其工作。
克里斯·斯特拉顿

Answers:


6
  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的唯一合理选择。


3
实际上,您几乎可以使用任何可以用来驱动外部编译器的IDE。
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.