杰理-timer硬件定时器配置

目录

杰理定时器demo:

 个人测试验证:


杰理的定时器有硬件定时器和软件定时器

软件定时器是基于systime线程提供的时基,可以参考下面这位博主的文章:

【杰理AC696X】软件定时器介绍-优快云博客

今天主要说的是硬件定时器的配置。

杰理定时器demo:

timer模式demo

//定时器
void timer_callback_func(int tid)
{

}

const struct gptimer_config timer_config = {
  .resolution_us = 10*1000, //定时10ms
  .irq_cb = timer_callback_func, //回调函数
  .tid = -1,  //填-1,内部自动分配timer
  .irq_priority = 1; //中断优先级,默认给1
};

int timer_tid = gptimer_init(&timer_config);
gptimer_start(timer_tid);

pwm模式demo

const struct gptimer_pwm_config pwm_config = {
  .port = PORTA, //指定输出IO,PA组
  .pin = 0, //指定输出IO,BIT(0)脚  输出口PA0
  .freq = 1000,//输出频率1Khz
  .pwm_duty_X10000 = 5123, //占空比51.23%
  .tid = -1,  //填-1,内部自动分配timer
};

int pwm_tid = gptimer_pwm_init(&pwm_config);
gptimer_start(pwm_tid);

capture模式demo

void capture_callback_func(int tid)
{
    enum gptimer_type mode = gptimer_get_work_mode(tid);

    if (mode == GPTIMER_CAPTRUE){
          u32 prd = gptimer_get_capture_count(tid);  //单位是us
          if (prd > 10000){
              gptimer_pause(tid);
              gptimer_set_resolution(tid,1000); //  设置定时时间1ms
              gptimer_set_work_mode(tid, GPTIMER_Timer);  // 切换为定时模式
              gptimer_resume(tid);
          }
    }else if(mode == GPTIMER_Timer){
        gptimer_pause(tid);
        gptimer_set_edge_type(tid, GPTIMER_EDGE_RISE);
        gptimer_set_work_mode(tid, GPTIMER_CAPTRUE);   // 切换为上升沿捕获模式
        gptimer_resume(tid);
    }
}

const struct gptimer_capture_config capture_config = {
  .port = PORTA, //指定输出IO,PA组
  .pin = 0, //指定输出IO,BIT(0)脚  输出口PA0
  .edge_type = GPTIMER_EDGE_RISE, //上升沿捕获
  .filter = 1000, //需要滤掉的频率,大于该频率的波形被过滤;写0则关闭滤波功能
  .irq_cb = capture_callback_func, //回调函数
  .tid = -1,  //填-1,内部自动分配timer
  .irq_priority = 1; //中断优先级,默认给1
};

int capture_tid = gptimer_capture_init(&capture_config);
gptimer_start(capture_tid);

 个人测试验证:

gptimer.c有预留接口,也有函数gptimer_test_demo();可以参考和调用

为了不影响其他定时器的正常工作,建议id参数设为-1,这样系统会自动分配空闲的定时器,如果创建失败会返回错误数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值