本章为系列指南第一章,主要是介绍一下项目思路,并且尽可能列出从零开始着手开发这个项目过程中,所需要理解的各类知识点,关于这些知识点,如果需要更详细的介绍,请列为看官自行百度谷歌。 STM32F407简介STM32F407主频168MHz,主频这个数值的意义可以这么理解:每秒执行168,000,000步简单指令,也就是每毫秒168,000次,每微秒168次。我们工业以太网进入实时通信后的数据传输周期大概每2ms交互4次,每次60个Byte,最差的算法复杂度计算下来需要每毫秒4 / 2 * 60byte = 120步(事实上用不了这么多步),而这颗STM32F07的芯片提供每毫秒168,000次操作,相差3个数量级,因此大致上看来这颗芯片是完全可以胜任的。 STM32F407可以通过多个时钟配置方案达到最高168MHz,一般是使用外部8MHz晶振,通过锁相环倍频到168MHz,这个我们后面章节会讲。 目前STM32芯片有三种代码编写的方案:第一是寄存器方案,通过内部各种地址定义的宏来操作,晦涩难懂,需要不停地查资料才能理解;第二种是标准库函数方案,沿用一份很久没有更新的标准库进行开发,标准库ST公司已经不打算维护升级了,但是网络上资料非常丰富;第三种是HAL库函数方案,继标准库推出多年之后,ST公司推出了HAL库函数版本的SDK,这份SDK保持维护和更新,并且ST公司在F7系列芯片上只允许这使用HAL库函数编程,目前为止该库函数版本的书籍资料并不是很丰富,值得庆幸的是正点原子团队也率先推出了STM32F1,F4,F7全系列的HAL库函数教程,参见:http://openedv.com/thread-13912-1-1.html 。但是针对本项目,我们依然使用标准库函数进行开发,理由是可以参考借鉴大量的以太网通信实验代码,以及ST官方的LWIP协议栈代码,毕竟这些现有成熟的代码还都是基于标准库函数进行编写的。
|