liangliangwa 发表于 2018-3-20 13:48:24

关于STM32F411XE的TIM2定时器定时微秒(us)的来瞧瞧啊~~

关于STM32F411XE的TIM2定时器定时微秒的来瞧瞧啊~~

我用TIM2定时器,定时了微秒级别,这时候,我还写了个定时器中断,在这个中断里面进行减减一个全局变量,而后,在延时函数里面进行while死等的判断这个全局变量,直到为0,则延时完成。本来这么想的,应该是对的,可是后来发现这样要是一直循环里面有延时的时候,程序就一直会在这个TIM2的中断函数里面执行,影响其他事情,问题有二(最好按标号答):
1.不知道大家都在微秒延时方面怎么做的?最好是在STM32F4系列,因为这个系列里100MHz以上的多。
2.针对题目中的定时器做微秒延时,要不要开中断处理函数,然后还用while去减减的等?有什么好方法?
感谢来本帖的侠义之士的好心帮助,感激不尽,感激不尽,感激,不尽,不尽···········

wenyangzeng 发表于 2018-3-20 14:07:52

本帖最后由 wenyangzeng 于 2018-3-20 14:29 编辑

中断里来1个while确实不合理。变量减到零设置一个标志位就够了

liangliangwa 发表于 2018-3-20 15:11:00

wenyangzeng 发表于 2018-3-20 14:07
中断里来1个while确实不合理。变量减到零设置一个标志位就够了

感谢回复!我说的是我有个中断函数,这个中断函数里面只是在减减一个全局变量,然后外面还有一个延时函数,这个延时函数一旦调用,里面内容是在用while等待中断函数里面减减的那个全局变量,看是不是减到0 了。

wenyangzeng 发表于 2018-3-20 15:25:47

liangliangwa 发表于 2018-3-20 15:11
感谢回复!我说的是我有个中断函数,这个中断函数里面只是在减减一个全局变量,然后外面还有一个延时函数 ...

明白了,那你应该在中断里设置一个条件,变量减到零就不再减了,否则会出0xffff。

liangliangwa 发表于 2018-3-21 09:24:45

wenyangzeng 发表于 2018-3-20 15:25
明白了,那你应该在中断里设置一个条件,变量减到零就不再减了,否则会出0xffff。 ...

感谢回复!这点还真没有想到,那如果是出现0xFFFF之后,就会继续减下去?不停止的等待?

wenyangzeng 发表于 2018-3-21 09:52:38

liangliangwa 发表于 2018-3-21 09:24
感谢回复!这点还真没有想到,那如果是出现0xFFFF之后,就会继续减下去?不停止的等待? ...

无限循环

liangliangwa 发表于 2018-3-22 09:45:05

wenyangzeng 发表于 2018-3-21 09:52
无限循环

感谢回复!好的,知道了。

stm1024 发表于 2018-3-22 09:54:29

你为什么不直接把while中检测到的值为0之后要处理的事情,直接放到中断中去执行呢?
就在中断中直接判断这个全局变量是否为0就行

liangliangwa 发表于 2018-3-22 11:24:19

stm1024 发表于 2018-3-22 09:54
你为什么不直接把while中检测到的值为0之后要处理的事情,直接放到中断中去执行呢?
就在中断中直接判断这 ...

感谢回复!有道理~哈哈·····
页: [1]
查看完整版本: 关于STM32F411XE的TIM2定时器定时微秒(us)的来瞧瞧啊~~