近期玩了一下Art_Pi的硬件定时器设备,常规的操作按照官网的说明文档操作,非常顺利。
参考地址如下:
[https://www.rt-thread.org/doc...
Art-Pi默认使能的硬件定时器是TIM13,只要配置一下RT-Thread Settings,然后按照文档一步步操作,很顺利的就能驱动硬件定时器设备了。但是H750不只有TIM13,还有其他的硬件定时器,要如何操作呢?在RT-Thread Settings中只有一个TIM13的选项可以选,没有其他的定时器。
一个小小的想法,又给自己挖了一个坑,好吧。想办法把这个坑填上。
首先想到的当然是修改Kconfig文件,来给Settings增加一个可以配置的选项。Kconfig文件修改如下:
修改完成之后保存,然后重新打开Settings就可以看到TIM16的选项了
勾选之后保存配置,然后编译,会出错。提示找不到“TIM16_CONFIG”,不慌不慌,这是因为SDK默认只是配置了TIM13,TIM16是我们自己添加的,当然这部分代码也要自己添加。具体的就是修改drivers/include/config/目录下的tim_config.h文件,添加TIM16_CONFIG的宏定义。其实只要照着抄TIM13的就可以。
这里的中断函数入口地址要到文件stm32h750xx.h文件中查找正确的名称
修改完成之后,再次编译,应该就不会出现报错了。而且下载之后运行代码,通过MSH的指令list_device是可以查看到设备注册成功了。
试着按照使用timer13的方式来使用timer16,结果没有反应。这是为什么呢?因为我们确实是将设备注册上去了,但是实际上TIM16的硬件初始化代码还没有添加上去,实际上TIM16并没有正常工作。这就要修改stm32h7xx_hal_msp.c文件。
修改之后保存退出,并重新编译下载。再次运行代码,就可以了。
通过上述方式就正常的驱动TIM16了,但是用相同的办法驱动TIM14却不成功,而且会引起MCU死机,不知道有没有大佬有解决方案呢?