[问题] timer和tick有何不同?

楼主: asdrtyjkl925 (阿斯拉)   2017-04-12 17:21:28
因为想做delay 1us的功能
目前用的MCU(TI MSP432P401R)
没办法让用类似直接数cpu cycle的方式来delay
本想说只好用timer来达成
但是看到官方提供的example里有个东西叫做"SysTick"
看它的机制和timer很像,可以说是功能精简的timer吧
然后做了个实验
tick和timer都设定每间隔1us就产生一次interrupt
(tick和timer有用gpio toggle的方式量过都确定是1us)
然后在ISR里都只执行i++这一行指令
分别跑一次程式,看结果有何差异
开timer、关tick的时候,只要enable timer interrupt
程式就会陷在timer interrupt ISR里,再也没办法跑回到main
而关timer、开tick时,即使enable tick interrupt
程式依然能回到main,继续跑之后的while(1) loop都没问题
请问这两者一样都是间隔1us产生interrupt
为什么用timer程式就会被卡死
而tick则是无影响呢?
作者: chuegou (chuegou)   2017-04-12 19:14:00
看起来是timer的中断flag在isr里没清掉...可是你又说gpio确定是1us
楼主: asdrtyjkl925 (阿斯拉)   2017-04-12 19:57:00
对耶!!我真的没清Flag!!卡住的原因应该是这个感谢提醒:) 不过也真的有量到1us,明天再看看是怎么回事
作者: m490521 (阿青)   2017-04-12 20:58:00
tick就是很简单的timer通常会拿来做RTOS的timebasetimer除了记时,通常还可以跟其他东西连动比如触发adc转换,pwm,capture等
楼主: asdrtyjkl925 (阿斯拉)   2017-04-13 09:23:00
了解 感谢楼上:)昨天可能眼残了,今天仔细一看timer没清flag的话用gpio量每次的间隔才0.87us XD有清flag就真的是1us,感谢大大指点迷津:D
作者: chuegou (chuegou)   2017-04-13 12:48:00
systick设定有问题吧? 差4倍不合理阿
楼主: asdrtyjkl925 (阿斯拉)   2017-04-13 16:48:00
好喔 设定是直接Copy example的 还没仔细去看 等等回去公司后来逐行突破:)近期要处理其它案子,这个问题要暂时先搁置了ˊˋ

Links booklink

Contact Us: admin [ a t ] ucptt.com