前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >104-SLM130(NB-IOT)C-SDK(OpenCPU)学习开发-定时器

104-SLM130(NB-IOT)C-SDK(OpenCPU)学习开发-定时器

作者头像
杨奉武
发布2022-06-02 17:20:25
发布2022-06-02 17:20:25
34600
代码可运行
举报
文章被收录于专栏:知识分享知识分享
运行总次数:0
代码可运行

说明

一共有6路定时器,0,1,2,3,4,5,可以做6路定时器或者6路PWM

直接看程序吧

1,定时器0每隔1ms进入中断

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>
#include "app.h"
#include "bsp.h"
#include "slpman_ec616.h"
#include "bsp_custom.h"
#include "pad_ec616.h"
#include "gpio_ec616.h"

#include "timer_ec616.h"


#define timer_index 0 //定时器0

#define timer_clock_id  GPR_TIMER0FuncClk //定时器时钟
#define timer_clock_select GPR_TIMER0ClkSel_26M //选择时钟

#define timer_irqn PXIC_Timer0_IRQn //定时器中断

volatile uint32_t timer_cnt=0;
//定时器中断
void timer_interrupt()
{
    if (TIMER_GetInterruptFlags(timer_index) & TIMER_Match0InterruptFlag)//中断
    {
        timer_cnt ++;
        TIMER_ClearInterruptFlags(timer_index, TIMER_Match0InterruptFlag);//清除中断
    }
}

void timer0_init(void)
{
    TIMER_DriverInit();//初始化

    CLOCK_SetClockSrc(timer_clock_id, timer_clock_select);//设置时钟
    CLOCK_SetClockDiv(timer_clock_id, 1);//设置时钟分频
    //配置定时器
    timer_config_t timerConfig;
    TIMER_GetDefaultConfig(&timerConfig);

    timerConfig.reloadOption = TIMER_ReloadOnMatch0;//设置第一个中断时间
    timerConfig.match0 = 26000;//计数到26000(1ms),产生中断
    TIMER_Init(timer_index, &timerConfig);

    TIMER_InterruptConfig(timer_index, TIMER_Match0Select, TIMER_InterruptLevel);//第一个时间产生中断
    TIMER_InterruptConfig(timer_index, TIMER_Match1Select, TIMER_InterruptDisabled);
    TIMER_InterruptConfig(timer_index, TIMER_Match2Select, TIMER_InterruptDisabled);

    //设置中断
    XIC_SetVector(timer_irqn, timer_interrupt);//设置中断回调函数
    XIC_EnableIRQ(timer_irqn);//使能中断

    TIMER_Start(timer_index);//打开定时器
}

void main_entry(void)
{
    BSP_CommonInit();//官方底层初始化函数,默认写上就可以

    BSP_CustomInit();//串口1作为printf

    timer0_init();
    while (1)
    {
        if (timer_cnt>=1000)//1S
        {
            timer_cnt=0;
            printf("11223344\r\n");
        }        
    }
}

2,如果使用定时器1可以把下面的0全部改为1

程序说明

配置时钟,设置中断啥的就不说了.

这个定时器貌似可以设置3个中断时间,下面是只设置了一个,

我也测试了设置多个,有效果,但是好像有个小疑惑.....

一般都是设置一个中断时间,所以就不研究设置多个了.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
    • 一共有6路定时器,0,1,2,3,4,5,可以做6路定时器或者6路PWM
    • 直接看程序吧
    • 1,定时器0每隔1ms进入中断
    • 2,如果使用定时器1可以把下面的0全部改为1
  • 程序说明
    • 配置时钟,设置中断啥的就不说了.
    • 这个定时器貌似可以设置3个中断时间,下面是只设置了一个,
    • 我也测试了设置多个,有效果,但是好像有个小疑惑.....
    • 一般都是设置一个中断时间,所以就不研究设置多个了.
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档