K210入门-裸机开发(五)之定时器TIMER定时
开发板:K210 AIRV R3版 widora
开发环境:kendryte IDE 官方的
必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图
1.新建文件夹05my_code_timer
礼物 + 地球
实例 -> 搜索timer 选择开发版本(develop) 然后下载到刚才的文件夹中
老规矩 安装依赖
清理+ 构建
环境搭建完成 下面开始改代码
2.修改代码
定时器在第18章
文档中有举例 等下就抄
要用到LED灯,同样查看开发板原理图
发现LED对应IO17和18
下面开始说代码 初始化中断
初始化定时器
看下这个参数怎么填 右键函数名称 跳到定义
有3个定时器 我用定时器0 复制TIMER_DEVICE_0过去
设置时间间隔 (配置定时器)
参数一,填刚才的定时器0(TIMER_DEVICE_0)
参数二 他这里有4个通道,我萌新 不知道什么意思,填通道0试试
参数 3 填定时时间, 单位他写的是ns(纳秒)
我这里定时1ms =1000us = 1000 000ns
注册以及配置中断
使能定时器
参数1 填定时器几, 参数2填定时器的通道, 参数3 是否使能
都写好之后 把总中断打开
然后补充一下LED灯的配置
添加头文件 #include "gpio.h" ,然后安装依赖 -> 清理 + 构建
然后加上之前学的LED配置代码
下面写定时器中断函数
200ms翻转LED1
500ms翻转LED2
两个flag的作用域不同,不会影响
插上开发板 一条龙服务
清理+构建+下载
效果
就是2个LED闪烁呗(周期不同) 还能有什么效果
定时器中断学习完毕, 下次再见
代码
#include <fpioa.h>
#include <plic.h>
#include <pwm.h>
#include <stdio.h>
#include <sysctl.h>
#include <syslog.h>
#include <timer.h>
#include "gpio.h"
int timer_callback(void) // 1ms来一次
{
static uint16_t flag200ms = 0;
static uint16_t flag500ms = 0;
if (++flag200ms == 200) {
static uint8_t flag = 0;
if (flag)
gpio_set_pin(0, GPIO_PV_LOW); // LED0
else
gpio_set_pin(0, GPIO_PV_HIGH);
flag200ms = 0;
flag = !flag;
}
if (++flag500ms == 500) {
static uint8_t flag = 0;
if (flag)
gpio_set_pin(1, GPIO_PV_LOW); // LED1
else
gpio_set_pin(1, GPIO_PV_HIGH);
flag500ms = 0;
flag = !flag;
}
}
int main(void) {
/* Init Platform-Level Interrupt Controller(PLIC) */
// 初始化中断模块
plic_init();
gpio_init();
fpioa_set_function(17, FUNC_GPIO0);
fpioa_set_function(18, FUNC_GPIO1);
gpio_set_drive_mode(0, GPIO_DM_OUTPUT);
gpio_set_drive_mode(1, GPIO_DM_OUTPUT);
gpio_set_pin(0, GPIO_PV_LOW); // 熄灭LED
gpio_set_pin(1, GPIO_PV_LOW);
timer_init(TIMER_DEVICE_0); //定时器0
// 参数1 定时器0, 参数2定时器通道,参数3 定时时间(纳秒)
timer_set_interval(TIMER_DEVICE_0, TIMER_CHANNEL_0, 1000000);
// 定时器0, 通道0,定时器回调函数,优先级
timer_set_irq(TIMER_DEVICE_0, TIMER_CHANNEL_0, timer_callback, 1);
// 定时器0, 通道0, 使能(1)/失效(0)
timer_set_enable(TIMER_DEVICE_0, TIMER_CHANNEL_0, 1);
sysctl_enable_irq();
while (1) // 等待中断
;
}
版权声明:本文为CSDN博主「jwdeng1995」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jwdeng1995/article/details/108032724