你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CubeMX + Nucleo-F031K6 图文Timer Demo

[复制链接]
fanyao-367090 发布时间:2016-7-24 16:43

在应用中,计时器的重要性就不多说了,这里我们用两种方式实现计时,一种是开一个通用定时器计时,另一种是系统自带的Systick计时器。

配置定时器的步骤可分为

1,选择一个定时器,选择计数时钟源来源

2,将时钟源设定分频系数后作为Timer的计数频率

3,设定计数周期、递增或递减计数。

4,开定时器,计时时间到之后触发中断,做相应处理。


下面用STM32CubeMX建立一个TIM2的Demo。


先用STM32CubeMX新建一个工程。

11.png


可直接根据板子型号找到STM32F031K6这块板

12.png


在Pinout选项中,TIM2时钟源选择内部时钟,虽然Timer还有其他功能,但现在我们只做一个计时器。

13.png


另外可设置RCC选择系统时钟源,系统时钟源默认为HSI,使用内部HRCOSC。

14.png

HES选择Bypass Clock Source 后时钟由外部输入,Nucleo-F031K6的外部时钟输入为另一片STM32芯片的MCO输出,此芯片的时钟为8MHz的晶振,精度和稳定度肯定比RC振荡要好。

15.png


如果选择外部时钟输入,Nucleo-F031K6板上的SB4需要短接,默认是开路的。

16.png

我们这里先使用HSI作为系统时钟。


板子上的绿色LED是PB3高电平驱动的,所以将PB3设置为Output模式,PB4/PB5也设置为输出,可以输出波形,方便测量定时时间。

17.png


在Clock Configuration选项中,通过PLL将时钟都配置为最大48MHz... 任性^_^

18.png


在Configuration选项中,单击各个模块可以设置具体参数。

19.png


点击TIM2,因为TIM2是在APB总线上,所以要按照APB的时钟设置参数,现在APB是48MHz,  配置TIM2为1ms时基,先将TIM2的计时时钟分频为1MHz,再计数1000,得到的计数频率即为1Khz。具体Prescaler  = (48 000 000H/1 000 000)-1 = 47,Counter Period  = 1000 - 1 = 999. 计数方向为Up。

20.png

GPIO中可将IO的输出速率设置为High

21.png


NVIC中可将相应的中断开启。

22.png


到这里,基本的模块设置都已完成。

生成Code之前在Project->Setting 中设置工程名和目录和编译器类型,

23.png

Project->Generate Code 即可导出工程了。可以直接用编译器打开。

24.png


生成的工程先编译一次。

00.png

无误。接下里就是处理Timer中断中的事了,

在使用TIM2之前,先用一下Systick 计时器。

在stm32f0xx_it.C中可以看到 SysTick_Handler()子程序,

25.png


  在HAL_IncTick();右键Go To Defin... 可以找到这个初始化程序。

26.png

在打开的stm32f0xx_hal.c文件中可以看到SysTick已经默认配置为了1ms时基。

27.png


同样Go to Defin... 找到 HAL_SYSTICK_IRQHandler(); 程序

28.png

HAL_SYSTICK_IRQHandler中是一个回调函数,下面是具体的函数内容

这里说到,需要使用这个函数时,需要在用户自己的文件中重新实现即可。所以这个函数可以Copy到main.c中,只要Systick中断后,就会执行这个函数。

我们在这个函数中翻转一个IO ,具体实现程序,HAL库都有提供。

29.png

编译,Download到31K6中,按复位按键。

可以看到输出为1ms翻转一次的波形。

30.png

同样的方法,找到TIM2的中断服务程序,在HAL_TIM_IRQHandler 中有一个TIM Updata event功能的子程序

31.png

再次找到这个回调函数。

32.png

Copy到main.c中。

001.png

在TIM2中断服务程序中再翻转一个IO,编译...No,TIM2中断还没打开,开之...

002.png

编译、Download、复位...

34.png


两个1ms翻转输出都出来了...

附件为Source Code 和Necleo-F031k6电路图及此博文的PDF档

STM32CubeMS F031k6 Timer Demo.pdf (1.14 MB, 下载次数: 31)

收藏 2 评论3 发布时间:2016-7-24 16:43

举报

3个回答
stary666 回答时间:2016-7-25 10:19:35
dark_ness 回答时间:2017-4-13 00:02:49
赞,感谢分享。
epochal 回答时间:2017-4-13 07:15:34
谢谢分享!!!

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版