打印
[技术问答]

NUC120串口问题

[复制链接]
860|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenpads|  楼主 | 2017-10-18 08:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        // set pll out 48Mhz, set cpu clock 48Mhz
        SYS_UnlockReg();
        CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
        CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
        CLK_SetCoreClock(48000000);
        CLK_EnableModuleClock(USBD_MODULE);
          CLK_EnableModuleClock(UART0_MODULE);
        CLK_SetModuleClock(USBD_MODULE, 0, CLK_CLKDIV_USB(1));
          CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));

        /* Set GPB multi-function pins for UART0 RXD and TXD */
          SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
          SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
          SYS_LockReg();
        
          SYS_ResetModule(UART0_RST);
上面代码usb工作正常,但UART0没输出,说明CLK_SetCoreClock(48000000);时钟频率是48Mhz问题;把CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));改成CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1)),问题也一样;去掉CLK_SetCoreClock(48000000);后,串口有输出,但USB就通信不了。我现在要用USB又要用UART0,不知怎么设置,谁遇到过此类问题,如何解决?
沙发
yiyigirl2014| | 2017-10-18 11:54 | 只看该作者
能否把两个时钟分开搞。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
chenpads + 2
板凳
antusheng| | 2017-10-18 18:31 | 只看该作者
有不同的时钟通道吧,看看是不是配置的问题。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
chenpads + 1
地板
chenpads|  楼主 | 2017-10-19 18:22 | 只看该作者
已经解决,可以用了:
        // set pll out 48Mhz, set cpu clock 48Mhz
        SYS_UnlockReg();
        CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
        CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
          CLK_EnableModuleClock(UART0_MODULE);
          CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));
        CLK_SetCoreClock(48000000);
        CLK_EnableModuleClock(USBD_MODULE);
        CLK_SetModuleClock(USBD_MODULE, 0, CLK_CLKDIV_USB(1));

        /* Set GPB multi-function pins for UART0 RXD and TXD */
          SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
          SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
          SYS_LockReg();
        
          SYS_ResetModule(UART0_RST);

          UART_Open(UART0,115200);

使用特权

评论回复
5
玛尼玛尼哄| | 2017-10-19 21:43 | 只看该作者
多谢楼主分享啊,是不是就是设置好了某个模块的时钟,就要立马使用它进行配置该模块,不要跟另外一个模块搞一起了。

使用特权

评论回复
6
天灵灵地灵灵| | 2017-10-19 22:02 | 只看该作者
分开进行了设置,解决了问题,看来以后要分模块做。

使用特权

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

本版积分规则

2

主题

42

帖子

2

粉丝