打印
[技术问答]

例子是不是有错

[复制链接]
735|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinpian101|  楼主 | 2018-3-8 18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ck, rc, se, UART, TI
刚才看到有人发帖关于系统初始化的顺序。说是先选择外设时钟源,再使能外设时钟。
使能外部/内部晶振,并等待晶振稳定(PWRCTL寄存器和CLKSTATUS寄存器)
 选择CPU时钟源(CLKSEL0寄存器)
 选择外设时钟源(CLKSEL1/CLKSEL2等寄存器)
 使能外设时钟(APBCLK寄存器)
 设定GPIO的功能(PA_L_MFP/PA_H_MFP等寄存器)

如上所述。
那么刚才看了一下用库函数写的例子。
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);

}
看上面,对于串口0的时钟配置,竟然是先使能然后设置时钟源,那么这个顺序正确吗,还是这两个可以不分先后呢?
沙发
xinpian101|  楼主 | 2018-3-8 18:30 | 只看该作者
/* Set core clock as PLL_CLOCK from PLL */
    CLK_SetCoreClock(PLL_CLOCK);
还有这个是不是就是设置CPU时钟呢啊?

使用特权

评论回复
板凳
huangcunxiake| | 2018-3-8 21:43 | 只看该作者
错误倒是不至于,根据那个结构,其实不分先后顺序的,关系是串联,你先开A,还是开B,最后的结果都是AB同时打开才有效。

使用特权

评论回复
地板
xinpian101|  楼主 | 2018-4-22 22:28 | 只看该作者
串联的关系,不分顺序

使用特权

评论回复
5
yiyigirl2014| | 2018-4-23 10:47 | 只看该作者
这种不算错误,能运行的。

使用特权

评论回复
6
jiekou001| | 2018-4-23 11:52 | 只看该作者
我以为什么呢,这个顺序是配置过程中的,颠倒一下也可以运行。

使用特权

评论回复
7
643757107| | 2018-4-23 15:51 | 只看该作者
只要没有启动前,先配置哪个都可以。

使用特权

评论回复
8
734774645| | 2018-4-23 19:06 | 只看该作者
看这个模块的结构图,只要合理的顺序都可以。

使用特权

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

本版积分规则

113

主题

1471

帖子

1

粉丝