
虽然,这样的文章很多,但还是想讲讲自己学习STM32的历程,希望给新手一些指导。 首先,说一下,我之前的开发经验,以前做过飞思卡尔,用的是XS128。但是ARM系列的机子,没有用过,对于库的概念完全没有,因此刚一接触这款单片机是一头雾水。找资料也找的够呛。 自然,最好的学习平台就是开发版了,在这里推荐STM32官方的DISCOVERY系列,本人用的就是这个系列。用DISCOVERY里面有很多例程。这是非常重要的,你会发现官方的程序原来可以这么写,对于你的编程风格有很大的帮助。而且最重要的是不贵,不到100块钱。% o& Y; r4 y$ q2 x. l- I 对于我来说,拿到单片机的第一件事,就是跑起来,我觉得这是很重要的事情,这样才有成就感,哪怕是一个简单的流水灯,最起码也要用起来。刚拿到discovery的时候,里面就有程序,插上USB就能闪烁。但是这个程序毕竟不是我们的,所以只能作为欣赏。 首先就是从官网上下载资料,一个是DISCOVERY的资料,然后就是F4芯片的资料。官方的资料很多,也很有用,但对于初学者来说我觉得这两个压缩包是最最重要的。在此,说一下,我当时为了找到F4纯正的库文件,走了很多的弯路。在网上搜资料,都是以前的资料,官网上根本找不到,实际上,在官网上下载STM32CubeF4,就包括了所有的你所需要的资源。很重要,希望大家少走弯路。 关于资料还有一个重要的途径,就是淘宝,万能的淘宝啊!很多商家在卖产品时会公布,回公布资料网址,我在淘宝上就看到了一套神州系列的开发板,F407的,将里面的资料全都弄下来了,很有用。所以大家以后要多多利用淘宝啊! 然后,就是库文件的学习,库文件繁多,如果单纯学习库文件,会把你看哭,我就是这样,面对这么多库文件,我当时想这,从哪里下手,实际上,最简单的方法,就是看例程,然后移植例程,在stm32CubeF4里面有template,这个真是好东东,省却了以前要建库的诸多麻烦,而且对于新手来说,你只要把CUBE里面example里面的例程看了,然后再把他移植过去,那我相信,对于整个库,你肯定有了一个认识,否则,别人说的再多也没用。调试运行,是看执行过程的一个很关键的方法,尤其在面对纷繁复杂的F4的库时,你会发现,单看程序会很头疼,单步调试很容易看到程序运行到哪里。这样就对程序在库中的运行有了一个大致的了解。关于库刚开始不必深究。就是看懂每一个函数的用法就可以了,对了,固件库的说明,我自己找了好半天,找了半天,发现固件库的说明原来就在程序中啊!程序的注释不就是固件库的说明嘛!尤其是最重要的,每一个库文件前面的一大串英文,很重要,这是我一开始是忽略掉的,因为上来就是一大串法律声明,以为后面没东东了,好东西都在后面呢!这点,我走了弯路,希望大家少走弯路。+ \0 f/ A. @, ?- z0 x8 E 模块方面的学习:) J' s x! g! N0 N 首先就是时钟,时钟的配置,是高级单片机的一大特色,对于从低级单片机过来的我,很不适应,大大的一个时钟树,放到那里,看起来甚是复杂,其实没那么复杂,比对程序就可以看出时钟设置的方法,无非就是时钟源的选择,还有时钟分频的选择,比对程序。对了,在这里有必要说一下,怎么看这个模块挂的什么时钟,这一点和低级单片机不一样,原来的单片机非常明白的说着这个模块挂在哪个单片机上,但是,在这里,没有即使是看英文说明,也没有写,比如我在调试SPI1的时候,很是嘀咕,这个波特率怎么设啊!我怎么知道它挂在哪个总线上,网上搜资料有说PCLK1的有说PCLK2的,看的我一头雾水,后来,浏览说明的时候,猛然间发现哦,原来看内存地图就行了,上面写的明明白白,瞬间开朗,软件SPI1和SPI3等挂的总线是不一样的。+ X& @4 p* O5 N% J! | 然后是GPIO的学习,关于寄存器方面就不在赘述了,相信相关资料数不胜数。STM32的学习,一定要学会说明文档,当时学XS128的时候,一个引脚图清清楚楚,这个引脚有什么用。但是STM32我当时做参考的只要参考手册,引脚图都没有,后来才发现还有一个数据手册,后来发现数据手册也不行还得有Cortex_m4_user guide,三个PDF文档,才能做下去,因为很多CORTEXM4内核的东东,比如中断优先级还有SYSCLK等都是数据内核层面的东西,Cortex_m4_user guide这个上面才有。 中断函数编写,这个还是最重要的就是看例程,看一下函数怎么调的就行了,有时候中断函数不知道从哪里来的就用CTRL+F查找将查找范围设为PROJECT,就行了,就可以看到一步一步,中断函数是怎么来的。* p, V8 b# J( M& ]( F/ u6 T$ I2 L SPI,IIC通信,这个问题,关于通信过程,推荐大家上网上搜一下软件模拟的实现方式,这样可以让大家对整个通信过程有一个深入的了解,比单纯的看文字要好很多。实际上,最新的库封装的相当出色,基本上直接调用就可以了,但是如果大家对通信方式不甚了解,后面写程序还是会遇到麻烦的。7 H& s2 A! a% n5 ^. \( {% W# n9 \ 今天,先写到这里,现在还在调试,后面的很多模块还没有用到,用到再向大家忠诚汇报。' r s/ O3 ]% x) u2 s* n 顺便说一句,我当然是看到那个活动了,免费的送F429开发板,希望版主看到了,给小弟一块。虽然,今天就是截止日期,但发现的太晚了。没办法。 / E }% z+ s. {: Q |