|
楼主 |
发表于 2012-3-9 10:44:30
|
显示全部楼层
简单介绍一下软件架构,主要分为三层, driver(st 3.5), middleware, application, driver 为 st 3.5, 所有的寄存器操作在这一层,middleware 实现各个模块的不同功能,它调用 driver, 并且提供 API 给 application, application 调用 middleware 做一些具体的应用。
举个例子,假设你要实现一个 串口功能,如果你专注 API 层,那么你仅仅需要调用 middleware 提供的 串口初始化 API 函数 ARC_COM_Init 就可以了,再进一步,你想知道串口初始化到底要做些什么事情,那么你去middleware看看这个函数的定义
void ARC_COM_Init()
{
ARC_COM_RCC_Init();
ARC_COM_GPIO_Init();
ARC_COM_PARAM_Init();
}
可以看到它分了三个步骤,初始化时钟,GPIO,和一些串口的参数设置,这些函数在 middleware 的不同文件夹分别实现了。
再进一步,如果你是硬件工程师 或者某个函数需要优化,或者有兴趣知道寄存器是怎么操作的,(软件工程没有必要花很多时间纠结寄存器是怎么操作的),你还可以看看 driver 层。各个层层次分明。
个人不建议除了 driver 层的地方,middleware 和 application 是不应该有操作寄存器的地方。而且最多花 1% 的时间了解寄存器。
对于一个比较复杂的芯片,并且不是通用的 (st 和 其他芯片 的寄存器操作是完全不同的,除了通用的 CM3相关寄存器),大部分寄存器的学习是无意义的,浪费精力时间。一边查寄存器手册,一边编写代码,一个小时后全忘光。没有人会问你 STM32 某个寄存器如何操作。 |
|