发帖
2 0 0

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

夜雨喧嚣
高级会员

14

主题

10

回帖

704

积分

高级会员

积分
704
BW系列 75 2 2025-5-17 23:23:16

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人觉得很赞 ────

使用道具 举报

2025-5-19 09:22:21
不错不错~
2025-5-19 14:02:28
👍丰富了社区BW20的教程
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28871 个
  • 话题数: 41329 篇