/***************************************************************************//**
文件: main.c
版本: V1.0.0
时间: 202101201
平台:MINI-GD32F103C8T6开发板
*******************************************************************************/
#include "gd32f10x.h"
#include "gd32f10x_libopt.h"
#include "systick.h"
//定时器配置
void timer_config(void)
{
/* -----------------------------------------------------------------------
系统主频108MHZ,timer_initpara.prescaler为107,timer_initpara.period为999,频率就为1KHZ
----------------------------------------------------------------------- */
timer_parameter_struct timer_initpara;
rcu_periph_clock_enable(RCU_TIMER1);
timer_deinit(TIMER1);
/* TIMER1 configuration */
timer_initpara.prescaler = 107;
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = 999;
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER1,&timer_initpara);
nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
nvic_irq_enable(TIMER1_IRQn, 0, 1);
timer_interrupt_enable(TIMER1, TIMER_INT_UP);
/* auto-reload preload enable */
timer_auto_reload_shadow_enable(TIMER1);
/* auto-reload preload enable */
timer_enable(TIMER1);
}
int main(void)
{
rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);//AHB主频是1分频
systick_config();//系统主频108MHZ,采用外部晶振,由两个宏决定(__SYSTEM_CLOCK_108M_PLL_HXTAL与HXTAL_VALUE)
rcu_periph_clock_enable(RCU_AF);//管脚复用时钟alternate function clock使能
delay_1ms(1000);//等待1秒
gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);//PB4管脚默认是NJTRST,要当GPIO,需要重映射
rcu_periph_clock_enable(RCU_GPIOB);//GPIOB时钟使能
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//PB4配置成输出
timer_config();//定时器初始化配置,1ms进入一次中断,TIMER1_IRQHandler()函数中实现LED闪烁
while(1)
{
}
}