#include "gd32w515.h"
// 定义中断服务函数
void TIMER0_IRQHandler(void) __attribute__((interrupt("IRQ")));
int main(void)
{
// 初始化系统时钟
SystemClock_Config();
// 配置GPIO
rcu_periph_clock_enable(RCU_PMU);
rcu_periph_clock_enable(RCU_TIMER0);
// 配置NVIC
nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0); // 设置优先级分组
nvic_irq_enable(TIMER0_IRQn, 0, 0); // 使能TIMER0中断,抢占优先级为0,子优先级为0
// 配置定时器
timer_parameter_struct timer0_initpara;
timer0_initpara.prescaler = 7999; // 设置预分频器
timer0_initpara.period = 9999; // 设置自动重装载值
timer0_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_init(TIMER0, &timer0_initpara); // 初始化定时器
timer_interrupt_enable(TIMER0, TIMER_INT_UP); // 使能更新中断
// 启动定时器
timer_enable(TIMER0);
// 主循环
while (1)
{
// 主循环内容
}
}
// 定时器中断服务函数
void TIMER0_IRQHandler(void) __attribute__((interrupt("IRQ")))
{
if (timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_UP) != RESET)
{
// 清除中断标志
timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP);
// 定时器中断处理逻辑
// ...
}
}
|