微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 之五:试试定时器

之五:试试定时器

时间:10-02 整理:3721RD 点击:

上一贴测试了下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跑起来,尽力而为,好吧。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top