本帖最后由 shenxiaolin 于 2023-8-15 07:38 编辑
前段时间出差,没有顾得上更新帖子,今天来更新一下,今天和大家要分享的是定时器的使用,
在使用定时器之前,需要我们吧HAL库的配置更改一下,首先是我们的STM32H5xx_HAL_CONF.h文件
我们这里把通用的模块都使能了,这样的话后面就不用做更改了,后期用到哪个模块就使能哪个模块。
我们这里把串口,定时器、RTC都使能了。
HAL库之所以这样做是因为我们只对使用的模块进行编译,缩短了整体编译的时间,同时也缩小了整体的代码大小。
通过查看我们的H563的数据手册,我们可以找到TIM1的时钟主频为250MHZ,这样的话可以方便我们对整个系统的时钟有所了解。
然后还有一个地方需要修改的,就是外部的晶振的频率值,原理图上给的是25M的,而程序内部使用的是8M的数值,这个地方需要注意一下,否则包括串口,定时器、CAN总线等和通信相关的都是有问题的。
(这个地方就是25M)
然后就是定时器的初始化了,定时器的初始化的时候我们可以跟踪到初始化的结构体内部,定时器的初始化结构体对结构体内部变量的大小以及取值都做了详细的说明,在编程的时候应当有所注意。
然后我查了一下STM32H563的定时器的例程,但是并没有发现有关于定时器基础应用的案例,不知道是懒得写还是怎么的,让人很头疼……然后自己根据以前的经验,写了一下,发现真的有点头疼……
Hall没有查看Hall中断标志位的函数,也没有清除中断标志位的函数,所以这个比较麻烦。只有从.h文件里面去找了。
但是按照原有的代码以及思想去看的话,实验效果存在问题,我们本来是想1s翻转一次,但是实际仿真的时候是6-7s才完成一个计数,导致实际翻转的值反而变成了6000-7000s看来这就是时钟配置的问题了。原始代码如下: |