设计中需要用一个计数器作为软件计时器的标准,要求每隔10mS计数器增加一次,提供给软件计时器做基准。 我看规格书文档号:spn517里12.2.1节关于RTI计数器的说明, 是不是可以这样: RTIUCx 赋一个合适的值,使经过10mS能够增加到这个值,从而RTIFRCx即为10mS的次数。 应用程序中即可使用RTIFRCx的值,作为计数器基准。 请大家帮忙看看,这样是否可行,或者有没有什么更好的方法实现此功能。
wei tang:
回复 Renton:
规格书spnu517中是这么写的
12.2.1 Counter OperationEach counter block consists of the following (see Figure 12-2):• One 32-bit prescale counter (RTIUC0 or RTIUC1)• One 32-bit free running counter (RTIFRC0 or RTIFRC1)The RTIUC0/1 is driven by the RTICLK and counts up until the compare value in the compare up counterregister (RTICPUC0 or RTICPUC1) is reached. When the compare matches, RTIFRC0/1 is incrementedand RTIUC0/1 is reset to 0. If RTIFRC0/1 overflows, an interrupt is generated to the vectored interruptmanager (VIM).
我的意思是,RTIUCPUC0设置一个比较的值,让RTIUC0从0增加,当增加到等于RTIUCPUC0设置的值时(根据RTI的时钟源,使RTIUC0从0增加到RTIUCPUC0的值时间为10mS),此时,RTIFRC0为10mS间隔的次数,RTIUC0又会复位到零,再计数。而RTIFRC0的值不就是10mS的间隔次数么?
Renton:
回复 wei tang:
Hi Wei,
没错,您的理解是正确的。
不过这么使用的时候需要注意的是,如果用户要预设RTIFRC0计数器的值,那么要先在RTIGCTRL寄存器中把整个计数模块停掉。
The counter can be preset by writing (in privileged mode only) to this register. The counter increments then from this written value upwards. Note: If counters must be preset, they must be disabled in the RTIGCTRL register to ensure consistency between RTIUC0 and RTIFRC0.
wei tang:
回复 Renton:
TI的IAR关于hercules关于rti的示例非常晦涩复杂,能帮忙在附件中提供需要的函数么?谢谢
user5820093:
菜鸟想问一下,主函数怎么调用