7回答

1收藏

如何在运行过程中把定时器的CNT值赋值为0

GD32 GD32 5452 人阅读 | 7 人回复 | 2017-07-22

软件想用一个定时器做时间测量,检测到一个GPIO高电平的时候,定时器从零开始计时,遇到低电平的时候读取计时器的值,我看GD的库里面没有直接操作定时器的函数,这样该如何去设置定时器
分享到:
回复

使用道具 举报

回答|共 7 个

倒序浏览

沙发

jwdxu2009

发表于 2017-7-23 12:52:57 | 只看该作者

参考和学习
板凳

噗噗熊

发表于 2017-7-28 15:19:22 | 只看该作者

帮顶,能解决的网友顺个嘴给解答下
地板

ts2000

发表于 2017-7-28 16:36:42 | 只看该作者

这个问题其实不难,先配置一个定时器,当引脚为高的时候启动定时器,当引脚为低的时候结束定时器。再读取定时器的计数值即可。

要实现的方法其实是很多,可能楼主没仔细阅读GD450的文档吧。
5#

ky123

发表于 2017-7-28 16:47:05 | 只看该作者

ts2000 发表于 2017-7-28 16:36
这个问题其实不难,先配置一个定时器,当引脚为高的时候启动定时器,当引脚为低的时候结束定时器。再读取定 ...

嗯,给你点个赞!
6#

mrqq43

发表于 2017-7-30 14:38:18 | 只看该作者

ky123 发表于 2017-7-28 16:47
嗯,给你点个赞!

if ((gpio_input_bit_get(ECHO_GPIO_PORT,ECHO_GPIO_PIN))==SET){
       timer_enable(TIMER3);
       time_counter = timer_counter_read(TIMER3);  
       distance_count = 0;
    }
    if ((gpio_input_bit_get(ECHO_GPIO_PORT,ECHO_GPIO_PIN))==RESET){     
       distance_count =timer_counter_read(TIMER3);
        if (distance_count >= time_counter)
           distance =distance_count - time_counter;  
        else
            distance =0xFFFF-distance_count + time_counter;
这样吗?
7#

mrqq43

发表于 2017-7-30 14:41:58 | 只看该作者

ts2000 发表于 2017-7-28 16:36
这个问题其实不难,先配置一个定时器,当引脚为高的时候启动定时器,当引脚为低的时候结束定时器。再读取定 ...

if ((gpio_input_bit_get(ECHO_GPIO_PORT,ECHO_GPIO_PIN))==SET){
       timer_enable(TIMER3);
       time_counter = timer_counter_read(TIMER3);  
       distance_count = 0;
    }
    if ((gpio_input_bit_get(ECHO_GPIO_PORT,ECHO_GPIO_PIN))==RESET){     
       distance_count =timer_counter_read(TIMER3);
        if (distance_count >= time_counter)
           distance =distance_count - time_counter;  
        else
            distance =0xFFFF-distance_count + time_counter;
这样吗
8#

mrqq43

发表于 2017-7-30 17:34:35 | 只看该作者

TIMER_CNT(TIMER3) = 0;  找到寄存器直接赋值为0
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条