首页 > 其他分享 >杰理-timer硬件定时器配置

杰理-timer硬件定时器配置

时间:2024-11-27 19:33:09浏览次数:7  
标签:capture 定时器 gptimer timer 杰理 tid config

目录

杰理定时器demo:

 个人测试验证:


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

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

【杰理AC696X】软件定时器介绍-CSDN博客

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

杰理定时器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,这样系统会自动分配空闲的定时器,如果创建失败会返回错误数。

 

标签:capture,定时器,gptimer,timer,杰理,tid,config
From: https://blog.csdn.net/m0_67447112/article/details/143975572

相关文章

  • golang 定时器的不同任务
    应用场景电池船数据上报频次:航行中1次/30秒,不航行1次/1小时电池簇数据上报频次:工作中1次/1秒,不工作不上报   main.gopackagemainimport( "fmt" "os" "os/signal" "syscall" "ticker/util" "time")varticker1*util.DynamicTi......
  • 定时器-初级程序-极语言教程
    //窗体代码:整数窗体,小时,分钟,标签3,标签4,计时;程序资源24,"清单.xml";程序段加载窗体整数左=(桌面.宽-350)>>1,上=(桌面.高-300)>>1;窗体=创建窗口($200,程序.名称,"定时器",$10CF0064,左,上,350,300,0,0,0,0);小时=创建窗口($200,"Edit","10",$50010000,70,65,45,......
  • 定时器JS深入理解解读
    set&clearinterval&timeout相信不论是老油条还是新手小白,你早就听过或者用过setInterval和setTimeout这俩哥们儿和他们的死敌clearInterval和clearTimeout了吧,作为项目里的“老面孔”和面试高频考点,今天GJ504b就带大家深入解读这四大活宝......
  • STM32定时器中断原理及模板代码
    ———————————————————————————————————————————主要关注预分频器和中断重装载寄存器和计数器,这三个寄存器合称为时基单元基本定时器只能使用内部时钟(频率为72MHz)预分频器:        可以用预分频器将72MHz分频    ......
  • STM32 系统滴答定时器和时间换算问题
    ARMCPU内部存在定时器SysTick可以称为系统滴答定时器,需要查看Cortex-M3->STK_CRTL控制和状态寄存器:32位寄存器:reserved保留0位:ENABLE:使能位,写1开始计时16位:COUNTFALG:标志位,计数完成自动置1。1位:TICKINT:中断使能,定时完成是否发生中断,0是默认关闭2位:CLKSOURCE:时钟源......
  • 【JavaEE初阶 — 多线程】定时器的应用及模拟实现
         目录  1.标准库中的定时器      1.1Timer的定义      1.2Timer的原理      1.3Timer的使用     1.4Timer的弊端      1.5ScheduledExecutorService     2.模拟实现定时器    ......
  • Qt开发技巧(十九):定时器的调用问题,控件的透明问题,慎用事件过滤器,依赖库的路径链接,对话框
    继续讲一些Qt开发中的技巧操作:1.定时器的调用问题有一个场景经常遇到,那就是在符合某个条件下,延时一段时间去执行一段代码,如果短时间内触发多次又不需要频繁执行,只需要执行一次就行。如果选择用QTimer::singleShot无法终止已经触发的,这个时候就要主动实例化一个单次定时器,......
  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
    PL/SQL什么是PL/SQLPL/SQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单......
  • java_day19_线程组、线程池、定时器、InetAddress、网络编程、设计模式
    一、线程组:线程组:将属于同一类的线程划分到同一组中,可以直接对线程组进行设置。ThreadGroup构造方法:ThreadGroup(Stringname)构造一个新的线程组。代码案例:classMyThread1extendsThread{publicMyThread1(){}publicMyThread1(ThreadGr......
  • #STM32#定时器扫描按键消抖#按键控制LED灯亮灭#标准库
    一.机械按键抖动在按下按键后金属弹片会来回震动影响I/O口的电平变化,影响检测和判断操作。通常抖动时间为:5ms~10ms影响:在不加消除抖动的情况下按下按键LED灯可能会出现失灵的情况,因为这时的判断按键情况通常是判断电平的高低,由于电平不停的发转,所以呀很难判断此时是否是被......