OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3489|回复: 4

COM4使用问题

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-1-21
在线时间
18 小时
发表于 2019-1-4 12:26:43 | 显示全部楼层 |阅读模式
5金钱
我按照例程LPUART1的写法,改LPUART4的配置,发送数据,一直接受不到,找了半天也没发现那里配置错误。

初始化函数
void LPUART4_Init(u32 bound)
{   
    u32 freq=0;                         //′®¿úμÄê±ÖóÔ′ÆμÂê
   
    CLOCK_EnableClock(kCLOCK_Lpuart4);  //ê1ÄüLPUART4ê±Öó
   
    CLOCK_SetMux(kCLOCK_UartMux,0);     //éèÖÃUARTê±ÖóÔ′ÎaPLL3 80Mhz£&#172LL3/6=480/6=80MHz
    CLOCK_SetDiv(kCLOCK_UartDiv,0);     //éèÖÃUARTê±Öó1·ÖÆ죬¼′UARTê±ÖóÎa80Mhz
   
    //LPUART4Ëùê1óÃμÄIO1|ÄüÅäÖ㬼′£o′óALT0~ALT7Ñ¡ÔñoÏêêμÄ1|Äü¡£
    IOMUXC_SetPinMux(IOMUXC_GPIO_B1_00_LPUART4_TX,0U);
    IOMUXC_SetPinMux(IOMUXC_GPIO_B1_01_LPUART4_RX,0U);
    //ÅäÖÃIOòy½ÅGPIO_AD_B0_12oíGPIO_AD_B0_13μÄ1|Äü
    //μí×a»»Ëù¶è,Çy¶ˉÄüá|ÎaR0/6,Ëù¶èÎa100Mhz£¬1رտa·1|Äü£¬ê1Äüpull/keepr
    //Ñ¡Ôñkeeper1|Äü£¬ÏÂà-100K Ohm£¬1رÕHyst
    IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_00_LPUART4_TX,0x10B0u);
    IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_01_LPUART4_RX,0x10B0u);

    freq=LPUART_SrcFreqGet();   
   
    LPUART_GetDefaultConfig(&lpuart4_config);               //ÏèéèÖÃÎaĬèÏÅäÖã¬oóÃæÔú¸ù¾Yêμ¼êÇé¿öÅäÖÃ
   
    lpuart4_config.baudRate_Bps=bound;                      //2¨ìØÂê
    lpuart4_config.dataBitsCount=kLPUART_EightDataBits;     //8λ
    lpuart4_config.stopBitCount=kLPUART_OneStopBit;         //1λí£Ö1λ
    lpuart4_config.parityMode=kLPUART_ParityDisabled;       //ÎTÆæżD£Ñé
    lpuart4_config.enableRx=true;                           //ê1Äü½óêÕ
    lpuart4_config.enableTx=true;                           //ê1Äü·¢Ëí
   
    LPUART_Init(LPUART4,&lpuart4_config,freq);              //3õê¼»ˉLPUART4
   
#if EN_LPUART4_RX                                           //êÇ·ñDèòa¿aÆôÖD¶Ï?
    //LPUARTÖD¶ÏéèÖÃ
    LPUART_EnableInterrupts(LPUART4,kLPUART_RxDataRegFullInterruptEnable); //ê1Äü½óêÕÖD¶Ï
    RT1052_NVIC_SetPriority(LPUART4_IRQn,5,0);              //ÇàÕ¼óÅÏ輶5£¬×óóÅÏ輶0
    EnableIRQ(LPUART4_IRQn);                                //ê1ÄüLPUART1ÖD¶Ï
#endif
}   


发送函数
void LPUART4_WriteBytes(const uint8_t *data, size_t length)
{
    while (length--)
    {
        while (!(LPUART4->STAT & LPUART_STAT_TDRE_MASK))
        {
        }
        LPUART4->DATA = *(data++);
    }
}


LPUART1也是用这个发送函数,可以收到正确数据。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2019-1-4 12:26:44 | 显示全部楼层
三面红旗 发表于 2019-1-5 17:56
多问一句那个例程是多个串口的配置,我找了几个都不是。谢谢。

485实验
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2019-1-5 01:21:15 | 显示全部楼层
估计是你的时钟没设置好,我们例程也有其他串口的,你可以参考下
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-1-21
在线时间
18 小时
 楼主| 发表于 2019-1-5 17:56:09 | 显示全部楼层
正点原子 发表于 2019-1-5 01:21
估计是你的时钟没设置好,我们例程也有其他串口的,你可以参考下

多问一句那个例程是多个串口的配置,我找了几个都不是。谢谢。
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-1-21
在线时间
18 小时
 楼主| 发表于 2019-1-7 10:25:29 | 显示全部楼层

谢谢。问题解决了。

要是用IOMUXC_GPIO_SD_B1_00_LPUART4_TX,IOMUXC_GPIO_SD_B1_01_LPUART4_RX这两个宏。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-9 03:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表