滴答定时器的计数模式_MSP432滴答定时器(SysTick)说明和配置

MSP432是 TI 的一款基于 arm cortex-M4 内核的 32 位低功耗处理器。低功耗表现十分优越。但是由于上市的时间较短,网上能查找到的相关资料是极其稀少的。所以作者想在此分享一些MSP432的相关学习经验。

首先要学习使用MSP432必需要有一份很重要的官方文档:

所有关于 432 这款芯片的技术问题都可以从中找到解决方法,当然前提是能看懂,目前还没有发现有中文版的。

好了,接下来就直奔这篇文章的主题滴答定时器了。

MSP432的滴答定时器实质就是一个 24 位的自减计数器,在参考文档 2.2.1(P70)可以找到相关说明。

Cortex-M4 includes an integrated system timer, SysTick, which provides a simple, 24-bit clear-on-write, decrementing, wrap-on-zero counter with a flexible control mechanism.

那么何为 24 位的自减计数器呢?

24 位表明计数能达到的最大值为 2^24=16777216 。

自减则是说每当检测到一个时钟信号的时候计数器的值减 1。一直减到到 0。

减到到零之后呢?减到零之后就会产生一个中断信号,并且重置计数器的值为重载寄存器 STRVR 的值,然后接着重复上面的过程。这样就可以实现一个定时的过程。

SysTick Reload Value Register (STRVR): The reload value for the counter, used to provide the counter's wrap value.

When enabled, the timer counts down on each clock from the reload value to zero, reloads (wraps) to the value in the STRVR register on the next clock edge, then decrements on subsequent clocks. Clearing the STRVR register disables the counter on the next wrap. When the counter reaches zero, the COUNT status bit is set. The COUNT bit clears on reads.

另外重要的一点是,MSP432的滴答定时器的时钟源是和 CPU 是一样的,而 CPU 的时钟源是MCLK 。

Consequently, the CLKSOURCE bit in the SYSTICK Control and Status register must always be written as 1 (to indicate CPU clock as reference clock) .(2.2.1 P70)

MCLK: Master clock. MCLK is software selectable as LFXTCLK, VLOCLK, REFOCLK, DCOCLK, MODCLK, or HFXTCLK. MCLK can be divided by 1, 2, 4, 8, 16, 32, 64, or 128. MCLK is used by the CPU and peripheral module interfaces, as well as, used directly  by some peripheral modules.(5.2 P292)

下面就是具体的代码实现(基于 TI 官方的函数库)。

//配置 MCLK 的时钟为 3MHz

MAP_CS_initClockSignal(CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1 );

//配置滴答定时器的周期,也就是重置寄存器的值为 3M

MAP_SysTick_setPeriod(3000000);

//使能滴答定时器

MAP_SysTick_enableModule();

//使能滴答定时器中断

MAP_SysTick_enableInterrupt();

//使能总中断

MAP_Interrupt_enableMaster();

上面的代码把滴答定时器的时钟源配置为了 3MHz , 也就是每经过 1/3000000 秒计数器就会减一,然后重装值为 3000000 ,也就是说每数 3000000 就会产生一个中断信号,那么每(1/3000000) * 3000000 = 1 秒 就会产生一次中断。

相关的中断函数需要在中断向量表里声明,并且自己定义功能代码,这样就实现了滴答定时器的定时器的功能。

滴答定时器可以作为实时系统(RTOS)的心跳,也可以作为一个简单的计数器或者高速定时器使用。

以上的就是作者想分享的关于MSP432的滴答定时器的全部内容。关于 MSP432 的其他内容(函数库,中断等)可以参考本博客其他文章。

TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:MSP432 滴答定时器(SysTick)说明和配置

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值