爱板网论坛

查看: 564|回复: 7

[GD32F450方案分享] 如何在运行过程中把定时器的CNT值赋值为0

[复制链接]

4

主题

0

好友

91

积分

童生

Rank: 2

  • TA的每日心情
    开心
    2017-9-5 22:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-7-22 18:30:44 |显示全部楼层
    软件想用一个定时器做时间测量,检测到一个GPIO高电平的时候,定时器从零开始计时,遇到低电平的时候读取计时器的值,我看GD的库里面没有直接操作定时器的函数,这样该如何去设置定时器
    回复

    使用道具 举报

    3

    主题

    1

    好友

    3929

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2017-11-6 22:21
  • 签到天数: 905 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2017-7-23 12:52:57 |显示全部楼层
    参考和学习
    回复

    使用道具 举报

    113

    主题

    63

    好友

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    该用户从未签到

    分区版主职务勋章

    发表于 2017-7-28 15:19:22 |显示全部楼层
    帮顶,能解决的网友顺个嘴给解答下
    回复

    使用道具 举报

    11

    主题

    0

    好友

    741

    积分

    举人

    Rank: 4

    该用户从未签到

    发表于 2017-7-28 16:36:42 |显示全部楼层
    这个问题其实不难,先配置一个定时器,当引脚为高的时候启动定时器,当引脚为低的时候结束定时器。再读取定时器的计数值即可。

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

    使用道具 举报

    23

    主题

    10

    好友

    3175

    积分

    超级版主

    Rank: 8Rank: 8

    该用户从未签到

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

    嗯,给你点个赞!
    回复

    使用道具 举报

    4

    主题

    0

    好友

    91

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2017-9-5 22:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 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;
    这样吗?
    回复

    使用道具 举报

    4

    主题

    0

    好友

    91

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2017-9-5 22:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 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;
    这样吗
    回复

    使用道具 举报

    4

    主题

    0

    好友

    91

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2017-9-5 22:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-7-30 17:34:35 |显示全部楼层
    TIMER_CNT(TIMER3) = 0;  找到寄存器直接赋值为0
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-11-18 12:54 , Processed in 0.160498 second(s), 15 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部