1.使用Crotex-M系列内核的
单片机,如果要使用他的任何外设都需要使能相应的外设时钟,而外设的时钟又来自系统时钟源,如下图
2.打开例程在system_gd32f3x0.c文件中已经设定为启用外部时钟,内部时钟为84Mhz。设置外部时钟为8M,是因为板子上的晶振为8Mhz。
3.弄清楚系统时钟源后,就要设置sys
tick的时钟源。在gd32f3x0_misc.c文件中,有一个systick时钟源的设置函数systick_clksource_set();可以设置systick的时钟源为系统时钟源或系统时钟源的8分之一。
4.systick实现延时函数
Systick定时时间的设定:
重装载值=systick 时钟频率(Hz)X想要的定时时间(S)
如:时钟频率为:HCLK的8分频;HCLK=84MHz那么systick的时钟频率为84/8MHz=10.5MHz;
定时1毫秒
重状态值=10500000X0.001=105000
程序入下
void delay_ms(uint16_t nms)
{
unsigned int temp;
SysTick->LOAD=nms*10500;
//时间加载(SysTick->LOAD24bit)10500000/1000
SysTick->VAL =0x00;
//清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
//开始计数
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16)));
//等待时间到达
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
//关闭Systick计数器
SysTick->VAL =0X00; //清空计数器
}