几年来,我一直在使用 8 位 AVR MCU 与学生一起构建巡线机器人。现在我想升级到 ARM Cortex-M3,因为我想添加一些 CPU 密集型功能,例如里程计和传感器融合。
要求是:
- 8个模拟输入,
- 4个PWM输出,
- 我2 C,
- 2个正交编码器输入,
- 串行输入/输出,
- 无需物理访问机器人即可进行无线自编程。
- 多平台工具链 + IDE(OS X、Linux、Windows)。
到目前为止,我采取的步骤是:
我正在使用这个基于 STM32F103C8 的开发板。我相信这个 MCU 有我需要的一切,包括我计划在软件中实现的 2 x QEI,但是这个恰好有它在硬件中,太棒了:
- 板http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- 程序员http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
我已经按照这个设置了我的工具链 + IDE:
我发现这个芯片的文档分散在许多我下载的 PDF 中:
- STM32F103x8 数据表http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- 参考手册http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- 其他一些文档,如 AN2606(内存引导模式)、PM0075(闪存编程手册)和 AN3155(串行引导加载程序协议),我将来可能会用到。
我还下载了 STM32F10x 标准外设库,但这反过来又建议我获得更新的 STM32CubeF1,我认为这只是上述产品的营销重命名,所以我得到了两个:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
最后,我还获得了 Joseph Yiu 撰写的“ARM Cortex-M3 权威指南”,我在等待开发板到达时正在阅读该指南。
我的问题是:
至少可以说,我对文档有点不知所措,我什至不确定我是否掌握了所有内容。例如,数据表和参考手册表明该芯片具有 3 个能够进行正交编码输入的定时器。但是,我在上面的 PDF 中的任何地方都找不到控制定时器的寄存器的文档。我错过了什么?
我应该使用(旧的?)标准外设库还是(新的?)立方体?有什么不同?我知道这两个库都使我免于直接操作寄存器,并且是推荐的方法。我对吗?
库的文档在哪里(除了嵌入的 doxygen 注释,这些注释很好,但我宁愿有一个可搜索的 html/pdf)?
我选择 Eclipse + GCC ARM + OpenOCD 作为我的工具链,因为我认为这是唯一可以在 3 个主要操作系统上运行而没有代码大小或其他限制的选项。还有更多选择吗?