打印
[技术问答]

关于Mini58的片内晶振使用问题。

[复制链接]
2019|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yyglucky|  楼主 | 2017-7-9 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是一个菜鸟,现在用Mini58做个小项目,哪位大神指点一下,把下面那个用外部晶振改成内部用内部22.1842M的晶振。谢谢
void SYS_Init(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Set P5 multi-function pins for XTAL1 and XTAL2 */
    SYS->P5_MFP &= ~(SYS_MFP_P50_Msk | SYS_MFP_P51_Msk);
    SYS->P5_MFP |= (SYS_MFP_P50_XT1_IN | SYS_MFP_P51_XT1_OUT);

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Enable external 12MHz XTAL, HIRC */
    CLK->PWRCTL |= CLK_PWRCTL_XTL12M | CLK_PWRCTL_HIRCEN_Msk;

    /* Waiting for clock ready */
    CLK_WaitClockReady(CLK_STATUS_XTLSTB_Msk | CLK_STATUS_HIRCSTB_Msk);

    /* Switch HCLK clock source to XTL */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_XTAL,CLK_CLKDIV_HCLK(1));

    /* STCLK to XTL STCLK to XTL */
    CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_XTAL);

    /* Enable IP clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select IP clock source */
    CLK_SetModuleClock(UART0_MODULE,CLK_CLKSEL1_UARTSEL_XTAL,CLK_CLKDIV_UART(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Set P1 multi-function pins for UART RXD, TXD */
    SYS->P1_MFP = SYS_MFP_P12_UART0_RXD | SYS_MFP_P13_UART0_TXD;

    /* Set P3 multi-function pins for Clock Output */
    SYS->P3_MFP = SYS_MFP_P36_CLKO;

    /* To update the variable SystemCoreClock */
    SystemCoreClockUpdate();

    /* Lock protected registers */
    SYS_LockReg();
}
沙发
yyglucky|  楼主 | 2017-7-9 16:02 | 只看该作者
我用的是keil MDK5.23的软件,把系统初始化给改一下,改成内部晶振,谢谢大师。

使用特权

评论回复
板凳
捉虫天师| | 2017-7-9 21:26 | 只看该作者
看着手册把对应的项目修改成HIRC。

使用特权

评论回复
地板
捉虫天师| | 2017-7-9 21:27 | 只看该作者
void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/
    /* 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);

    /* Enable UART module clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART module clock source */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Set P3 multi-function pins for UART0 RXD and TXD */
    SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
    SYS->P3_MFP |= (SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0);

}

使用特权

评论回复
5
捉虫天师| | 2017-7-9 21:28 | 只看该作者
上面是官方的例子中的一部分,你可以看看,官方的例子基本上都是使用的内部的这个RC振荡器。

使用特权

评论回复
6
yyglucky|  楼主 | 2017-7-10 10:31 | 只看该作者
谢谢  天师。
为何我用
    void SYS_Init(void)
    {
        /*---------------------------------------------------------------------------------------------------------*/
        /* Init System Clock                                                                                       */
        /*---------------------------------------------------------------------------------------------------------*/
        /* 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);

        /* Enable UART module clock */
        CLK_EnableModuleClock(UART0_MODULE);

        /* Select UART module clock source */
        CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));

        /*---------------------------------------------------------------------------------------------------------*/
        /* Init I/O Multi-function                                                                                 */
        /*---------------------------------------------------------------------------------------------------------*/

        /* Set P3 multi-function pins for UART0 RXD and TXD */
        SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
        SYS->P3_MFP |= (SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0);

    }
有很多变量通不过

使用特权

评论回复
7
yyglucky|  楼主 | 2017-7-10 10:32 | 只看该作者
我cpu用的mini58    Keil Mdk 5.23

使用特权

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

本版积分规则

24

主题

260

帖子

3

粉丝