发帖
0 0 0

[BW20]二次开发学习2 定时器中断

夜雨喧嚣
中级会员

7

主题

4

回帖

386

积分

中级会员

积分
386
BW系列 17 0 昨天 23:23

1、驱动函数熟悉

驱动函数位置

ameba-rtos/component/soc/amebadplus/hal/src/timer_api.c

具体内容可以自行下载SDK查看

本文需要使用的函数如下

1.1、定时器初始化

文件中第59行起

void gtimer_init(gtimer_t *obj, uint32_t tid)

obj:创建的定时器对象

tid:定时器编号

1.2、自动重载启动定时器

文件中第200行起

void gtimer_start_periodical(gtimer_t *obj, uint32_t duration_us, void *handler, uint32_t hid)

obj:定时器对象

duration_us:定时器重载时间

handler:回调函数

hid:回调函数参数

2、创建time.c,.h

.c代码如下

#include "userTime.h"

gtimer_t time_oj;  //创建定时器对象
void userTimeInit(void *handler)
{
    gtimer_init(&time_oj,0);  //使用定时器0

    gtimer_start_periodical(&time_oj,1000,handler,0);  //1毫秒定时
}

.h代码如下

#ifndef _userTime_H_
#define _userTime_H_

#include "timer_api.h"
void userTimeInit(void *handler);
#endif

3、主函数应用

3.1、回调函数

void gpioTestTask(void * pvParameters)
{
	(void)pvParameters;
	static unsigned int msCount = 0;
	static int flag = 0;
	msCount++;
	if(500 <= msCount)
	{
		msCount = 0;
		if(0 == flag)
		{
			flag = 1;
			LED1Test(1);
		}
		else
		{
			flag = 0;
			LED1Test(0);
		}
	}
}

3.2、初始化函数

image.png

编译烧录后会看见开发板蓝色灯0.5秒闪烁

──── 0人觉得很赞 ────

使用道具 举报

您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28748 个
  • 话题数: 41021 篇