智能车制作

标题: 串口FUCK浪费我一下午时间! [打印本页]

作者: 战怺竝!    时间: 2013-3-6 18:52
标题: 串口FUCK浪费我一下午时间!
[attach]41497[/attach]
竟然写两个串口5,我以为就一个呢,按PD口弄的不行,以前M3还有个重映射呢,还有K60上的pringf到底怎么做的,为什么我没有看到串口初始化,就可以用printf,

作者: yangkuanqaz8598    时间: 2013-3-6 18:59
如果是野火的库的话,串口的初始化实在 sysinit.c 的 void sysinit(void)有做过初始化。至于拉普兰德的话,应该也是差不多。
至于串口我现在一直没弄出来,我让单片机一直发送数据,然后用网上卖的 PL2303 的USB->串口线,怎么样连接单片机,上位机都收不到数据。
导致我现在一直用的是拉普兰德的 USB虚拟串口 的函数来调用 Printf 函数。
不知道你串口怎么调的,能说下不。

作者: 李增杰    时间: 2013-3-6 19:14

作者: 战怺竝!    时间: 2013-3-6 19:38
yangkuanqaz8598 发表于 2013-3-6 18:59
如果是野火的库的话,串口的初始化实在 sysinit.c 的 void sysinit(void)有做过初始化。至于拉普兰德的话, ...

我也是用LPLD的板子,接一个USB转串口,
我不懂他给的例程为什么不用这初始化
uart_init (UART5_BASE_PTR, PLL_96, 115200);

作者: qurrer    时间: 2013-3-6 21:00
不好搞
作者: yangkuanqaz8598    时间: 2013-3-6 21:03
战怺竝! 发表于 2013-3-6 19:38
我也是用LPLD的板子,接一个USB转串口,
我不懂他给的例程为什么不用这初始化
uart_init (UART5_BASE_P ...

那你最后串口已经出来了啊,求解下我试了UART1 、UART5都出不来,我的USB->串口线又是好的,真不知道哪里出错了。

作者: 战怺竝!    时间: 2013-3-6 21:26
yangkuanqaz8598 发表于 2013-3-6 21:03
那你最后串口已经出来了啊,求解下我试了UART1 、UART5都出不来,我的USB->串口线又是好的,真不知道哪里 ...

不会啊,我用的LPLD 的库,
我捋一遍
    #define TERM_PORT           UART5_BASE_PTR
    #define TERMINAL_BAUD       115200
这几句是定义串口5

void sysinit (void)
{
        /*
         * 使能所有端口的时钟. 为了配置引脚复用则必须使能这里, 所以大多数代码需要配置这些.
         */
        SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
                      | SIM_SCGC5_PORTB_MASK
                      | SIM_SCGC5_PORTC_MASK
                      | SIM_SCGC5_PORTD_MASK
                      | SIM_SCGC5_PORTE_MASK );
  /* 配置系统时钟 */
core_clk_mhz = LPLD_PLL_Setup(CORE_CLK_MHZ);
/*
         * 用pll_init函数的返回值来定义变量:core_clk_khz和periph_clk_khz(以kHz为单位)
  * 这些变量将在其他功能上
  */
core_clk_khz = core_clk_mhz * 1000;
   periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
   /*
         *出于仿真的目的, 使能追踪时钟和FlexBus时钟来
    */
trace_clk_init();
   fb_clk_init();
   /* 使能选中的 UART */
   if (TERM_PORT == UART3_BASE_PTR)
   {
                 /* 使能 PTC17 引脚的 UART3_TXD 功能  */
    PORTC_PCR17 = PORT_PCR_MUX(0x3); // 该引脚的 功能3 是 UART
    /* 使能 PTC16 引脚的 UART3_RXD 功能 */
    PORTC_PCR16 = PORT_PCR_MUX(0x3); // 该引脚的 功能3 是 UART
   }
   if (TERM_PORT == UART5_BASE_PTR)
   {
                 /* 使能 PTE8 引脚的 UART5_TXD 功能  */
    PORTE_PCR8 = PORT_PCR_MUX(0x3); // 该引脚的 功能3 是 UART
    /* 使能 PTE9 引脚的 UART5_RXD 功能  */
    PORTE_PCR9 = PORT_PCR_MUX(0x3); // 该引脚的 功能3 是 UART
   }
   /* UART0 and UART1 由 core clock 提供时钟源, 但是其他所有 UARTs 由
         * peripheral clock 提供时钟源. 所以要在这里决定用哪个时钟作为 uart_init 的参数.
         */
        if ((TERM_PORT == UART0_BASE_PTR) | (TERM_PORT == UART1_BASE_PTR))
           uart_init (TERM_PORT, core_clk_khz, TERMINAL_BAUD);
        else
      uart_init (TERM_PORT, periph_clk_khz, TERMINAL_BAUD);
        
#if(defined(DEBUG_PRINT))  
        // 打印系统频率
        printf("Core Clock:%dMHz!\r\n", core_clk_mhz);
        printf("Bus Clock:%dkHz!\r\n", periph_clk_khz);
#endif
}
这是LPLD写的一个系统配置函数,里边只配置了串口3和5的UART功能引脚,没配置串口1的,

作者: yangkuanqaz8598    时间: 2013-3-6 21:39
你的串口5能正常运行啊。
我是用野火的库就是,我是取消了初始化函数里面的串口,直接在主函数里面重新初始化的串口1
作者: 战怺竝!    时间: 2013-3-6 21:43
yangkuanqaz8598 发表于 2013-3-6 21:39
你的串口5能正常运行啊。
我是用野火的库就是,我是取消了初始化函数里面的串口,直接在主函数里面重新初始 ...

串口1和5的时钟不同的,我也是刚学,闹不太懂
作者: exiao    时间: 2013-3-6 22:06
电路原理图要认真看啊
作者: 战怺竝!    时间: 2013-3-6 22:07
exiao 发表于 2013-3-6 22:06
电路原理图要认真看啊

原理图上就是两个串口5的,
作者: wangshi_8678    时间: 2013-3-7 10:47
原理图看的我烦!
作者: 201000171238    时间: 2013-3-7 11:34

作者: 忍冬草    时间: 2013-3-16 21:53
战怺竝! 发表于 2013-3-6 19:38
我也是用LPLD的板子,接一个USB转串口,
我不懂他给的例程为什么不用这初始化
uart_init (UART5_BASE_P ...

为什么 ,我也不明白
作者: 潜水一厮    时间: 2013-3-17 00:08
本帖最后由 潜水一厮 于 2013-3-17 00:09 编辑
yangkuanqaz8598 发表于 2013-3-6 21:03
那你最后串口已经出来了啊,求解下我试了UART1 、UART5都出不来,我的USB->串口线又是好的,真不知道哪里 ...

我也用拉普兰德的。。。





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2