如何使用嵌入式C启动ARM Cortex编程?

时间:2018-06-29 04:57:04

标签: c arm embedded

我熟悉8051 C编程。现在我想学习ARM cortex M3编程。我有一个带ARM Cortex M3处理器的STM32F103C8T6开发板,它是编程器和Keil编译器。我想用它做一些小项目,例如LED闪烁,SPI和I2C编程等。我对ARM体系结构了解甚少。许多博客上的人说直接开始编程,而不是阅读体系结构或阅读数百页的ARM数据表。我不知道怎么可能。

那我的第一步应该是什么?

  1. 我应该阅读STM32F103C8T6或ARM Cortex M3用户手册的数据表吗?

  2. 8051和ARM编程有很大的不同。在8051中,我们不需要添加库/头文件。在ARM中,我们需要添加许多库/头文件。 假设我想做一个眨眼程序或学习SPI / I2C通信。在KEIL Compiler或STM CubeMX中,这些头文件已经存在。但是,如果我希望自己做所有事情(编写用于外围设备,I / O端口的头文件代码,SPI / I2C协议代码),真的有可能吗?如果是,我该怎么办?

由于找不到合适的人来指导我,我感到非常困惑和沮丧

enter image description here

3 个答案:

答案 0 :(得分:9)

我去过那里,过了一段时间后,我意识到最好还是从数据表入手,即使这是您的第一块板子。

数据表提供了电路板,引脚和基本通信的全面工作。这可能很乏味,但是值得,并且您将在开始编程时意识到。

之后,您可以直接跳至头文件,并查看基本功能的实现,这将使您对优化技术,编程风格和最佳实践有很多见识。

如果可能的话,再为该板子写一些代码(我总是在这里失败,如果您的板子很少见,这很难)。

有了这个,您应该准备编写几乎所有代码。从眨眼(木板的问候世界)开始

以我的经验,我也想告诉你,这需要时间。有耐心和毅力。

答案 1 :(得分:3)

作为C程序员,尽管我建议简要阅读CPU手册,但您无需阅读有关CPU内核体系结构的信息。知道有哪些寄存器以及有什么资源,数据缓存,指令缓存等,意味着您可以编写更高质量的C代码。然而,对于像8051这样可怕的内核,这一点更为重要。

关于MCU外设和内存,您确实需要阅读手册中要使用的零件中的每一行。这包括看门狗,时钟设置,MMU,中断处理等基础知识。

但是,当今大多数用于MCU:的工具链都带有某种形式的糖衣库。他们将为您提供一个可以完成大部分工作的项目。这意味着您不必一次学习所有内容,而是可以随着项目的进行逐步学习。例如,要使某些LED闪烁,您应该无需阅读手册的GPIO部分就能做到这一点。

您最终可能必须用质量代码替换预制的快速且脏的库。这是因为提供这些库的芯片制造商在编写软件方面臭名昭著。在某些情况下,他们设法为您提供适当的MCU设置代码,但在更多情况下,它们会为您提供低质量的代码。

This大致是MCU设置的外观。您可以使用该列表来验证从制造商那里获得的内容是否有用,或者是否必须由专业的嵌入式程序员重写。例如,取决于应用程序要求,ARM CMSIS可能不够好。根据工具链的不同,它也有不同的口味。

答案 2 :(得分:3)

如果您利用现有的库代码来处理体系结构,启动和外围驱动程序问题,则有可能(即在没有详细了解数据表和参考手册的情况下开始)。对于ARM Cortex-M和STM32,具体可能包括(在抽象和作用域的各个级别):

商业工具供应商(例如Keil,IAR,Rowley,Green Hills)通常还会提供示例项目,驱动程序库和中间件,以帮助您入门-通常是针对特定的开发板。

也许这就是您对ARM编程的看法

  

“需要添加许多库/头文件。”

您根本不需要-但是它们比8051更为复杂,具有广泛而复杂的外围设备集,零件和供应商之间有所不同,并且您可以通过使用此类库来节省大量时间和精力。 / p>

请注意,ARM Cortex-M内核本身不包括微控制器外围设备以及CPU和NVIC中断控制器之外的部分,而在FPU的某些高端部件上,所有内容都是特定于供应商的,并且各供应商之间差异很大-因此,您需要了解供应商文档,或者利用芯片或工具供应商或社区提供的库。

如果您想完全了解Cortex-M或STM32并充分利用它们,那么没有什么替代品可以代替阅读参考资料,但这绝对不是开始的必要。

如果您想比ARM参考资料更容易实现Cortex-M,那么Joseph Yiu的The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors是一个很好的资料,但是除非您编写的是底层RTOS或裸手。 -metal启动代码或其他系统级别的代码,您可能不需要那么多的材料。本书的早期M3版本仅以some places的PDF格式提供。

芯片供应商的参考手册,将描述供应商特定的功能,例如内存接口,内存映射,电源管理功能,闪存编程,中断映射和硬件外设,可能是更有用的材料。

专门针对STM32,Hitex的Trevor Martin有一个较为宽泛的指南:The Insider's Guide To The STM32 ARM Based Microcontroller,这只是Trevor几本有用的出版物之一。