之五:试试定时器
上一贴测试了下412的工程模板和固件库编程方式,发现和f1系列的片子差不了多少,这贴试试f4的定时器,能控制的了定时器,基本上就没大碍了,就深入点搞搞网络这块,好吧。
放寒假了,早早地就回家来了,还是家里好呀,爽爽的,有暖气,不冷,在宿舍冻成狗了都要。家里没网,不能及时上传试用贴,和福利君商议了下,可以先保存着记录,等回学校一起上传就行。感谢福利君啦。刚回家,这贴就简单点,借上贴的例程,实现定时器控制小灯闪烁就行,好吧。
拷贝led工程代码,重命名为timer
东西还是这些东西。新建一个timer.c和timer.h的文件,并加入工程当中
然后查一下f4系列的手册,发现f4的定时器真特么多呀,搞的我都不知道该用那个了。这可怎么办。
这时候忽然想起了一个3,就决定用timer3吧,根据上图,发现tim3属于通用功能定时器,查了下rcc源码,发现tim3属于APB1总线上挂接的,所以看下框图先
然后查到了tim3的时钟来源,一级级分频来的,这个和f1基本差不多,但还是有区别。下面开始写代码好吧。timer.h中如下:
timer.c中如下:
这里的代码主要配置了定时器的预分频器、计数阈值以及中断优先级这些,里面和f1都差不多,感觉也不难,挺好搞的。
main.c中为:
如上搞定之后,写进去发现led2并没有闪烁,奇了怪了,后来启动调试,发现timer_cnt在增加,但是led确实没有闪烁,最后才发现原来上节写的led.c中有个小问题,就是配置io的时候没有指定配置的具体引脚,led.c改为如下,就好勒。
上节实验结果只是点亮小灯,没有熄灭,所以没有指定配置引脚,也能亮,结果这节就找出了问题在此纠正过来啦。
写进去之后就可以发现led开始闪烁啦。
好勒,这节测试过了timer之后就发现f4和f1的编程思路几乎一样,由于st给我们做好了非常通用的固件库,这里我们就可以屏蔽底层啦。
这节就到这里,下周研究下网络以及lwip相关知识,争取下下节用f4把lwip跑起来,尽力而为,好吧。