[应用方案] NuMicro M058S 库函数中CLK_SysTickDelay函数延时不准是什么情况..

[复制链接]
 楼主| cr315 发表于 2020-12-7 17:09 | 显示全部楼层 |阅读模式
刚接触 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秒
                }
}
七毛钱 发表于 2020-12-8 09:22 | 显示全部楼层

只能到2^24,程式有註解 ,最多3秒多。

* @brief      This function execute delay function.
  * @param[in]  us  Delay time. The Max value is 2^24 / CPU Clock(MHz). Ex:
  *                             50MHz => 335544us, 48MHz => 349525us, 28MHz => 699050us ...
  * @return     None
kxsi 发表于 2021-1-6 15:00 | 显示全部楼层
和别的相比 有很多不一样的地方吗
nawu 发表于 2021-1-6 15:05 | 显示全部楼层
感觉是一样的啊
qcliu 发表于 2021-1-6 15:07 | 显示全部楼层
是不是你的时钟跟例程设置不一样啊
tfqi 发表于 2021-1-6 15:08 | 显示全部楼层
硬件的时钟用的是一样的吗
wiba 发表于 2021-1-6 15:08 | 显示全部楼层
看着像是延时函数有问题
classroom 发表于 2021-2-11 12:02 | 显示全部楼层
只能到2^24,程式有註解 ,最多3秒多。

* @brief      This function execute delay function.
  * @param[in]  us  Delay time. The Max value is 2^24 / CPU Clock(MHz). Ex:
  *                             50MHz => 335544us, 48MHz => 349525us, 28MHz => 699050us ...
  * @return     None
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1448

主题

4810

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1448

主题

4810

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部