RH850开发板StarterKit示例程序分析--R_SYSTEM_TimerInit()定时器初始化

本文将开始分析定时器初始化的代码,其他已发布的代码分析可参看以下链接
一、系统时钟初始化R_SYSTEM_ClockInit();

email:1256153255@qq.com

website for get 瑞萨RH850开发板 and 瑞萨E1仿真器
在这里插入图片描述

言归正传开始介绍本文的内容。

2、定时器OSTM0初始化
此处是初始化定时器OSTM0,用于产生1ms tick
在这里插入图片描述
Code segment 2.1

2.1、R_OSTM0_Init()
在这里插入图片描述
Code segment 2.2
Code segment 2.2-> Line82配置OSTM0仿真寄存器
在这里插入图片描述
图2.1
通过上图可知,配置OSTM0仿真寄存器,使之在Debuger接入MCU时,count clock停止。
由下图可知,EPS.SVSTOP可通过Debugger进行set,用户禁止对其进行设置。
在这里插入图片描述
图2.2

Code segment 2.2-> Line83配置OSTM0CTL寄存器
①配置counter的操作模式(Interval timer mode或Free-run compare mode),此处设置为Interval timer mode
②配置开始计数时OSTMTINT中断的产生(开始计数时禁能中断或开始计数时使能中断),此处配置为开始计数时禁能中断
在这里插入图片描述
图2.3
在这里插入图片描述
Code segment 2.3
在这里插入图片描述
图2.4
在这里插入图片描述
图2.5
在Code segment 2.2->Line83中设置opereation mode为 Interva timer mode,因此Code segment 2.3 -> Line116的形参cmp_value值为计数器向下计数的初始值。
那么到了这里之后可能就有朋友纳闷了,在code segment 2.1->Line241的注释中说经过配置后产生1ms的tick,这个1ms tick怎么产生的,和 code segment 2.1->Line248的实参39999有什么关系?又是怎么算出来的?
别急!稳住!且听我徐徐道来。
首先从图2.6可知OSTM0的时钟是由CPUCLK2提供的,那么我只要知道CPUCLK2是多少就行了。
从图2.7可知,PLL→CPUCLKS→CPUCLKD→CPUCLK2(CPUCLKD/2),所以呢其实CPUCLK2是由PLL二分频得到的,那么PLL又是多少呢?请看图2.8,一切尽在不言中。
综上分析可知OSTM0的频率为40MHz,那么从39999减到0需要多长时间呢?答对了,正好是1ms。
在这里插入图片描述
图2.6
在这里插入图片描述
图2.7
在这里插入图片描述
图2.8
至此,定时器OSTM0初始化完成

这里以一个实例来说明定时时间的用法:
在Code segment 2.1->Line 248,函数的实参是39999,算出的定时时间是1ms
在后边的Mode1中,会以倒计时方式串口打印距离进入DeepStop模式的时间
在这里插入图片描述
code segment 2.4
从code segment2.4得知,计数满100,进行一次打印

我们要求无操作30s后Mode1 → DeepStop,因此会出现图2.9的打印信息
在这里插入图片描述
图2.9
结合图2.9和code segment2.4可知变量是1ms自加一次, 自加100次是100ms,刚好和图2.9吻合

将Code segment 2.1->Line 248,函数的实参变成399999,算出的定时时间应该是是10ms,变量自加100次进行一次打印,那么应该是1s打印一次,经实参调整验证,确实是1s打印一次
在这里插入图片描述
到此,大家对OSTM0的定时应该有个初步了解了吧

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: msp-exp430f5529_hal 是一个硬件模块程序资源库,适用于 MSP-EXP430F5529 实验板。该资源库包含了一系列的函数和驱动程序,方便开发者在这块实验板上进行嵌入式系统的开发。 首先,msp-exp430f5529_hal 提供了丰富的驱动程序,用于操作实验板上的不同硬件模块。这包括了 GPIO 管脚、UART、SPI、I2C、ADC 等等。开发者可以使用这些驱动程序,快速、方便地实现对这些硬件模块的控制和操作。 其次,msp-exp430f5529_hal 还提供了一些配置函数,用于初始化实验板上的各个硬件模块。通过设置这些配置,开发者可以按照自己的需求来调整硬件模块的工作方式,以适应不同的应用场景。 此外,msp-exp430f5529_hal 还包含了一些实用函数,用于处理常见的操作。例如,它提供了延时函数,用于在代码中添加一定的延时,以满足一些特殊需求;它还提供了一些数学函数,如求平方根、求绝对值等等。 总的来说,msp-exp430f5529_hal 是一个非常有用的硬件模块程序资源库,为开发者提供了丰富的函数和驱动程序,可帮助他们更快、更方便地开发嵌入式系统。无论是初学者还是有经验的开发者,都可以从中受益,提高开发效率。 ### 回答2: msp-exp430f5529_hal是一个硬件模块程序资源库,专为MSP-EXP430F5529开发板设计。它提供了一系列的API函数,方便开发者对开发板的硬件模块进行控制和操作。 这个硬件模块程序资源库包含了多个子模块,如GPIO、UART、ADC、Timer等,每个子模块都有相应的函数和定义,可以实现对应模块的功能。例如,对于GPIO模块,我们可以通过这个资源库中的API函数来控制开发板上的引脚,进行输入输出的操作;对于UART模块,我们可以利用相应的API函数来实现串口通信的功能。 使用msp-exp430f5529_hal的硬件模块程序资源库,开发者可以方便地进行硬件模块的配置和使用,减少了开发的复杂性和繁琐的底层代码编写。只需要简单地调用相应的函数,就可以实现对硬件模块的控制。这不仅节省了开发时间,还提高了开发效率。 此外,msp-exp430f5529_hal的硬件模块程序资源库还提供了一些示例程序,供开发者参考。通过这些示例程序,开发者可以更加深入地了解如何使用这个资源库来实现具体的功能。同时,它还提供了详细的文档和注释,方便开发者查阅和理解。 总的来说,msp-exp430f5529_hal的硬件模块程序资源库是一个简化硬件开发的工具,提供了丰富而方便的API函数给开发者使用,使开发过程更加高效和便捷。 ### 回答3: msp-exp430f5529_hal是一个硬件模块程序资源库,专门为MSP-EXP430F5529开发板设计的。该资源库提供了一系列的函数和驱动程序,用于帮助开发人员在该开发板上快速、方便地进行硬件模块的编程和控制。 msp-exp430f5529_hal资源库包括了多个模块,例如GPIO(通用输入输出)、ADC(模数转换器)、UART(通用异步收发器)、SPI(串行外设接口)等。每个模块都有相应的函数和接口,开发人员可以根据需要调用这些函数来完成对硬件模块的控制。 例如,对于GPIO模块,msp-exp430f5529_hal提供了GPIO_setupPinMux()函数,用于配置引脚的多路复用功能;GPIO_setAsInputPin()函数和GPIO_setOutputLowOnPin()函数,用于将引脚设置为输入模式和输出低电平模式等。 对于ADC模块,msp-exp430f5529_hal提供了ADC_init()函数,用于初始化ADC模块;ADC_startConversion()函数和ADC_getResults()函数,用于启动ADC转换并获取转换结果等。 使用msp-exp430f5529_hal资源库,开发人员可以方便地进行硬件模块的编程和控制,无需关注底层的寄存器操作和硬件细节。这样可以大大提高开发效率,缩短开发周期。 总而言之,msp-exp430f5529_hal是一个为MSP-EXP430F5529开发板设计的硬件模块程序资源库,提供了丰富的函数和驱动程序,方便开发人员进行硬件模块的编程和控制。使用该资源库可以加快开发速度,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值