通过定时器0通道0,实现LED闪烁
#include <fpioa.h>
#include <plic.h>
#include <stdio.h>
#include <sysctl.h>
#include <syslog.h>
#include <timer.h>
#include <unistd.h>
#include "gpiohs.h"
int ctx = 0;
int value = 0;
// 定时器回调
int timer_callback(void* ctx) {
gpiohs_set_pin(3, value = !value);
return 0;
}
int main() {
plic_init(); //中断控制初始化
sysctl_enable_irq(); //使能中断
fpioa_set_function(12, FUNC_GPIOHS3);//led---IO12初始化
gpiohs_set_drive_mode(3, GPIO_DM_OUTPUT);
gpiohs_set_pin(3, GPIO_PV_HIGH);
timer_init(0); //初始化定时器0
timer_set_interval(0, 0, 500000000); //设置定时器时间间隔 500ms
timer_irq_register(0, 0, 0, 1, timer_callback, &ctx); //不是单次中断
timer_set_enable(0, 0, 1); //使能
while (1) {
sleep(1);
}
return 0;
}