RTT小师弟 · 2021年06月01日

Art_Pi学习笔记7:自己添加硬件定时器设备HWTIMER

近期玩了一下Art_Pi的硬件定时器设备,常规的操作按照官网的说明文档操作,非常顺利。
参考地址如下:
[https://www.rt-thread.org/doc...

Art-Pi默认使能的硬件定时器是TIM13,只要配置一下RT-Thread Settings,然后按照文档一步步操作,很顺利的就能驱动硬件定时器设备了。但是H750不只有TIM13,还有其他的硬件定时器,要如何操作呢?在RT-Thread Settings中只有一个TIM13的选项可以选,没有其他的定时器。
图片.png

一个小小的想法,又给自己挖了一个坑,好吧。想办法把这个坑填上。

首先想到的当然是修改Kconfig文件,来给Settings增加一个可以配置的选项。Kconfig文件修改如下:
图片.png

修改完成之后保存,然后重新打开Settings就可以看到TIM16的选项了
图片.png

勾选之后保存配置,然后编译,会出错。提示找不到“TIM16_CONFIG”,不慌不慌,这是因为SDK默认只是配置了TIM13,TIM16是我们自己添加的,当然这部分代码也要自己添加。具体的就是修改drivers/include/config/目录下的tim_config.h文件,添加TIM16_CONFIG的宏定义。其实只要照着抄TIM13的就可以。
图片.png

这里的中断函数入口地址要到文件stm32h750xx.h文件中查找正确的名称
图片.png

修改完成之后,再次编译,应该就不会出现报错了。而且下载之后运行代码,通过MSH的指令list_device是可以查看到设备注册成功了。
图片.png

试着按照使用timer13的方式来使用timer16,结果没有反应。这是为什么呢?因为我们确实是将设备注册上去了,但是实际上TIM16的硬件初始化代码还没有添加上去,实际上TIM16并没有正常工作。这就要修改stm32h7xx_hal_msp.c文件。
图片.png

修改之后保存退出,并重新编译下载。再次运行代码,就可以了。

通过上述方式就正常的驱动TIM16了,但是用相同的办法驱动TIM14却不成功,而且会引起MCU死机,不知道有没有大佬有解决方案呢?

原文:https://club.rt-thread.org/as...

推荐阅读
关注数
8059
内容数
181
小而美的物联网操作系统,经过14年的累积发展,RT-Thread 已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过4亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息