打印
[技术问答]

请教NUC472的UART

[复制链接]
2803|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
永远的牛虻|  楼主 | 2016-1-28 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么NUC472的uart只有uart0可以通过串口调试助手打印输出呢,其他的uart1-5都不可以呢?
沙发
yiyigirl2014| | 2016-1-28 21:34 | 只看该作者
因为那个是串口配置的是使用的0,你也可以配置为其他的啊。不过默认的是0

使用特权

评论回复
板凳
永远的牛虻|  楼主 | 2016-1-29 09:14 | 只看该作者
yiyigirl2014 发表于 2016-1-28 21:34
因为那个是串口配置的是使用的0,你也可以配置为其他的啊。不过默认的是0 ...

我配置为其他的了,但是不可以用,uart2和uart0除了引脚配置不同,还有别的不同吗?配置程序如下,麻烦帮我看看,谢谢!
void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Enable External XTAL (4~24 MHz) */
    CLK->PWRCTL |= CLK_PWRCTL_HXTEN_Msk; // XTAL12M (HXT) Enabled

    /* Waiting for 12MHz clock ready */
    CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);


    /* Switch HCLK clock source to HXT */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HXT,CLK_CLKDIV0_HCLK(1));

       
          /* Set PLL to power down mode and PLL_STB bit in CLKSTATUS register will be cleared by hardware.*/
    CLK->PLLCTL |= CLK_PLLCTL_PD_Msk;

    /* Set PLL frequency */
    CLK->PLLCTL = CLK_PLLCTL_84MHz_HXT;

    /* Waiting for clock ready */
    CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);

    /* Switch HCLK clock source to PLL */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_PLL,CLK_CLKDIV0_HCLK(1));
       
         /* Enable IP clock */
        // CLK_EnableModuleClock(UART0_MODULE);
         CLK_EnableModuleClock(UART2_MODULE);


    /* Select IP clock source */
  //  CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_HXT, CLK_CLKDIV0_UART(1));
          CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL1_UARTSEL_HXT, CLK_CLKDIV0_UART(1));

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
    SystemCoreClockUpdate();

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Set PG multi-function pins for UART0 RXD, TXD */
   SYS->GPA_MFPH = SYS_GPA_MFPH_PA13MFP_UART0_RXD | SYS_GPA_MFPH_PA14MFP_UART0_TXD ;
         
                 /* Set GPC multi-function pins for UART2 RXD and TXD */
    SYS->GPC_MFPH = SYS_GPC_MFPH_PC10MFP_UART2_RXD | SYS_GPC_MFPH_PC11MFP_UART2_TXD ;       


   /* Set PB multi-function pins for UART1 RXD, TXD, RTS and CTS */
   SYS->GPD_MFPL = SYS_GPD_MFPL_PD4MFP_UART3_RXD | SYS_GPD_MFPL_PD5MFP_UART3_TXD;

    /* Lock protected registers */
    SYS_LockReg();

}



/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/
int main (void)
{
        int i;
    /* Init System, IP clock and multi-function I/O
       In the end of SYS_Init() will issue SYS_LockReg()
       to lock protected register. If user want to write
       protected register, please issue SYS_UnlockReg()
       to unlock protected register if necessary */
      SYS_Init();
       
         /* Init UART to 115200-8n1 for print message */
     UART_Open(UART2, 115200);
        // UART_Open(UART0, 115200);
       
          //  printf("\n\nCPU @ %dHz\n", SystemCoreClock);

    printf("+-------------------------------------+ \n");
    printf("|           GPIO Driver Sample Code   | \n");
    printf("+-------------------------------------+ \n");


}

使用特权

评论回复
地板
09kk小熊| | 2016-1-29 09:35 | 只看该作者
printf();本来就是用的UART0,定义在retarget.c里面可以找到“#define DEBUG_PORT   UART0”,把这里改掉才会从其它串口端口输出,而且一般printf()只是打印调试信息而已啊

使用特权

评论回复
5
yiyigirl2014| | 2016-1-29 09:43 | 只看该作者
楼主看楼上的说明,按照这个修改宏就行了,不是该那个其他的,Printf是专门内部定义的。不需要你外部在去一步一步实现了。

使用特权

评论回复
6
永远的牛虻|  楼主 | 2016-1-29 09:56 | 只看该作者
09kk小熊 发表于 2016-1-29 09:35
printf();本来就是用的UART0,定义在retarget.c里面可以找到“#define DEBUG_PORT   UART0”,把这里改掉才 ...

谢谢

使用特权

评论回复
7
永远的牛虻|  楼主 | 2016-1-29 09:58 | 只看该作者
yiyigirl2014 发表于 2016-1-29 09:43
楼主看楼上的说明,按照这个修改宏就行了,不是该那个其他的,Printf是专门内部定义的。不需要你外部在去一 ...

谢谢

使用特权

评论回复
8
springvirus| | 2016-1-29 13:02 | 只看该作者
地板层 正解

使用特权

评论回复
9
bitofnoone| | 2016-1-29 15:15 | 只看该作者
配置的原因,看看你是不是吧uart0配置给了printf

使用特权

评论回复
10
小猫爱吃鱼| | 2016-1-30 17:04 | 只看该作者
那是因为系统默认设置是把uart0分配给了printf

使用特权

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

本版积分规则

17

主题

67

帖子

4

粉丝