龙芯1B:timer定时器例程

目录


前言

一、定时器是什么?

二、定时器编码示例

1.开发步骤

2.代码

总结


前言

up主的联系方式:

微信公众号:嵌入式up

大家好!大家点点关注,大家的关注才是我持续更新的动力!

vx ——>  buildupup     公众号   嵌入式up   如果文章对您有帮助,请打赏一元呗,感谢支持,分享不易,码字不易。希望对大家帮助!


一、定时器是什么?

1. 什么是定时器(timer)

定时器实际上就是芯片当中的一个内部设备。

顾名思义,定时器就是个规定时间的,比如说:规定LED灯1亮一次等等。

但是大家要清楚龙芯1B200内部是没有定时器的,这个在以前的文章里面也有讲过,所以再贴一遍。

cad02fded6414b7699a1e04f8139e64b.png

 没有定时器怎么办呢,这时候后我们有两种方法来解决类似需要定时的问题,一种是PWM模拟定时器,还有一种就是RTC计时中断。(本文目前只介绍一下第一种方法,后续讲到RTC再讲解RTC中断)

如下,官方文档也曾说明过PWM的定时器功能。

2fc2d64fc2c74c25be037c5287a8236a.png

二、定时器编码示例

1.开发步骤

第1步, 新建工程
第2步, 在 bsp.h 中打开 PWM2 的宏定义, 并在 main.c 下添加 ls1b_gpio.h 和    ls1x_pwm.h文件。
第3步, 定义 pwm_cfg_t 结构体配置 PWM open 的 arg 参数。
第4步, 编写一个中断回调函数
第5步, 调用 ls1x_pwm_timer_start函数启动 PWM2 工作,开始定时。
第6步, 调用 ls1x_pwm_timer_stop函数停止 PWM2 工作,停止定时

2.代码

pwm定时器初始化:

    pwm_cfg_t cfg;
    cfg.cb = pwmtimer_callback;
    cfg.isr = NULL;
    cfg.mode = PWM_CONTINUE_TIMER;
    cfg.hi_ns = 5000000;//5ms
    cfg.lo_ns = 0;
    ls1x_pwm_timer_start(devPWM2,&cfg);

定时回调函数:

unsigned int count = 0;
void pwmtimer_callback(void *pwm, int *stopit)
{
    count++;
    if(count <= 100)
    {
       gpio_write(3,0);
    }
    else if(count <= 200)
    {
        gpio_write(3,1);
    }
    else if(count > 200)
    {
        count = 0;
    }
}

总结

pwm定时器定时的时间有些值是无法使用的,大家可以自己尝试一下,此处我咨询过相关技术人员,后续会有更新。此处就当留给大家一个尝试代码的彩蛋吧。我已经尝试过很多的时间了。


挫折是弱者的绊脚石,是强者的垫脚石。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值