打印
[应用方案]

NuMicro M058S 库函数中CLK_SysTickDelay函数延时不准是什么情况..

[复制链接]
503|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
感觉是一样的啊

使用特权

评论回复
5
qcliu| | 2021-1-6 15:07 | 只看该作者
是不是你的时钟跟例程设置不一样啊

使用特权

评论回复
6
tfqi| | 2021-1-6 15:08 | 只看该作者
硬件的时钟用的是一样的吗

使用特权

评论回复
7
wiba| | 2021-1-6 15:08 | 只看该作者
看着像是延时函数有问题

使用特权

评论回复
8
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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1197

主题

3037

帖子

0

粉丝