首页 理论教育 STM32固件库编程中SysTick寄存器的应用

STM32固件库编程中SysTick寄存器的应用

时间:2023-10-21 理论教育 版权反馈
【摘要】:SysTick有4个寄存器用于设置SysTick中断,如表6-2所示。表6-2SysTick相关寄存器这4个寄存器是SysTick使用的关键,由于其有固件库,故使用起来非常方便。这个初值就存放在SysTick_LOAD寄存器中。当SysTick定时器的值递减到0后,LOAD寄存器的值会自动装载给SysTick_VAL。

STM32固件库编程中SysTick寄存器的应用

SysTick有4个寄存器用于设置SysTick中断,如表6-2所示。与51系列单片机类似,它们需要设置SysTick的工作模式、初值等。

表6-2 SysTick相关寄存器

这4个寄存器是SysTick使用的关键,由于其有固件库,故使用起来非常方便。下面了解一下这几个寄存器的结构。

1.CTRL寄存器

CTRL控制寄存器是一个32位寄存器,复位值为0x0000 0000,它用来设置SysTick工作状态,其中32bit的含义如下:

bit[0]:ENABLE SysTick使能位,0=关闭SysTick功能,1=开启SysTick功能。

bit[1]:TICKINT SysTick中断使能位,0=关闭SysTick中断,1=开启SysTick中断。

bit[2]:CLKSOURCE SysTick时钟源选择位,0=使用HCLK/8时钟源,1=使用HCLK时钟源。

bit[16]:COUNTFLAGSysTick计数比较标志,如果计数器达到0,则读入为1;当读取或清除当前计数器值时,将自动清除为0。(www.xing528.com)

其他位:保留。

2.LOAD寄存器

系统定时器SysTick是一个24bit的向下计数器,当计数寄存器的值递减到0的时候系统定时器就会产生一次中断,初值会拷贝到计数寄存器中,然后再一次从头向下减,以此循环往复。这个初值就存放在SysTick_LOAD寄存器中。

当SysTick定时器的值递减到0后,LOAD寄存器的值会自动装载给SysTick_VAL(当前值寄存器)。LOAD寄存器是32位的寄存器,但使用的位是bit23~bit0,共24位,其余不用保留。因此初值最大为16M,即16777216。使用的时候应注意初值的最大值不要超过这个范围。

3.VAL寄存器

VAL是当前数值寄存器,存放的是SysTick的当前计数值,同样使用了bit23~bit0,读取时返回当前倒计数的值。注意:该寄存器可以写,但执行写操作会使之清零,同时还会清除SysTick控制寄存器和状态寄存器中的COUNTFLAG标志,因此应谨慎执行写操作。

4.CALIB寄存器

CALIB是校准值寄存器,它使系统即使在不同的CM3、CM4产品上运行,也能产生恒定的SysTick中断频率,校准的功能就在于使用外部信号进行时钟校准。此功能极少使用,因此这里不做进一步的讨论。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈