打印
[技术问答]

NUC123SD4A UART1發送資料錯誤

[复制链接]
398|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麻花油条|  楼主 | 2021-2-11 12:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好,我依照UART0範例改寫成UART1,接腳為PB4, PB5,發送出來的數據都不對,不曉得還少了什麼步驟?謝謝各位

1。
/* Enable UART1 module clock */
CLK_EnableModuleClock(UART1_MODULE);
/* Select UART module clock source as HXT and UART module clock divider as 1 */
CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));

2。

/* Set GPB multi-function pins for UART1 RXD(PB.4) and TXD(PB.5) */
    SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB4_Msk | SYS_GPB_MFP_PB5_Msk);
    SYS->GPB_MFP |= (SYS_GPB_MFP_PB4_UART1_RXD | SYS_GPB_MFP_PB5_UART1_TXD);

SYS->ALT_MFP &= ~(SYS_ALT_MFP_PB4_Msk | SYS_ALT_MFP_PB5_Msk);
    SYS->ALT_MFP |= (SYS_ALT_MFP_PB4_UART1_RXD | SYS_ALT_MFP_PB5_UART1_TXD);

3。
/* Reset UART0 module */
    SYS_ResetModule(UART1_RST);
    /* Configure UART0 and set UART0 Baudrate */
    UART_Open(UART1, 115200);
  
    /* Configure UART0 disable hardware flow control */
   UART_DisableFlowCtrl(UART1);

    /* Enable the UART0 interrupt */
    UART_EnableInt(UART1, UART_IER_RDA_IEN_Msk);
   NVIC_EnableIRQ(UART1_IRQn);

使用特权

评论回复
沙发
duo点| | 2021-2-11 12:10 | 只看该作者

请问你是怎么测试的.你的代码我这边测试了没问题

使用特权

评论回复
板凳
onlycook| | 2021-2-11 12:12 | 只看该作者
是否时数据传输太少没有达到FIFO触发中断的阈值,看一下RFITL  设置接收FIFO触发中断的阈值设置的多少;可以按下面的设置中断,当接收的数据没有等到fifo阈值时,等到超时也会产生中断
  UART_EnableInt(UART1, (UART_IER_RDA_IEN_Msk | UART_IER_RTO_IEN_Msk));

使用特权

评论回复
地板
内政奇才| | 2021-2-11 12:13 | 只看该作者
您好,依前述程式碼已可正常發送,但接收時中斷向量沒有反應,已確認硬體沒有問題
若是改成
UART_EnableInt(UART1, (UART_IER_RDA_IEN_Msk | UART_IER_THRE_IEN_Msk));
增加了Tx empty interrupt是有進入中斷向量的,所以確認中斷是有啟動的,
但唯獨對於接收還是沒有反應,麻煩幫忙了,謝謝

使用特权

评论回复
5
小灵通2018| | 2021-2-16 19:09 | 只看该作者
那几个中断设置都试试看哪个生效。

使用特权

评论回复
6
jasontu| | 2021-2-18 09:35 | 只看该作者
那去检查下,RX是否真的有波形迈入RX端口,如果中断没有过来,是否没有串口资料迈入。
最简单的方式,RX, TX短路作LOOPBACK测试

使用特权

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

本版积分规则

262

主题

1388

帖子

2

粉丝