刚接触 NuMicro M058S, 对他库的 使用方法不很了解,遇到如下问题请教高手。
在官方的M058SSAN开发上写了一个LED 闪烁的程序,闪烁延时调用的是官方库中的CLK_SysTickDelay()函数。
但是实际的延时时长要比设置的延时时长短很多。是不是我的使用方法不对呢。请教高手。
代码如下:
#include <stdio.h>
#include "M058S.h"
#define PLL_CLOCK 50000000
void SYS_Init(void)
{
/* Unlock protected registers */
SYS_UnlockReg();
/* Enable Internal RC 22.1184MHz clock */
CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
/* Waiting for Internal RC clock ready */
CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);
/* Switch HCLK clock source to Internal RC and HCLK source divide 1 */
CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1));
/* Enable external XTAL 12MHz clock */
CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
/* Waiting for external XTAL clock ready */
CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
/* Set core clock as PLL_CLOCK from PLL */
CLK_SetCoreClock(PLL_CLOCK);
SYS_LockReg();
}
int main()
{
SYS_Init();
CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLK_S_HXT_DIV2);
GPIO_SetMode(P3, BIT6, GPIO_PMD_OUTPUT);
while(1)
{
P36 = 0 ;
CLK_SysTickDelay(5000000);//设置5秒的延时,实际大概有0.5秒
P36 = 1 ;
CLK_SysTickDelay(5000000);//设置5秒的延时,实际大概有0.5秒
}
} |