找回密码
 立即注册

QQ登录

只需一步,快速开始

开启左侧

[NUC] nuc240 uart1 可以傳送卻無法接收

[复制链接]
匿名  发表于 2019-10-24 11:19:48 |阅读模式
我是個初學者, 學範例改程式, 由 PC 端用 RS232 通訊, 根據測試 NUC240 傳送沒問題,


卻無法收到訊息, 不知為何, 懇請各方前輩高手不吝幫忙,  謝謝:


以下是我改的程式:

#include <stdio.h>
#include "NUC230_240.h"

#define PLLCON_SETTING      SYSCLK_PLLCON_50MHz_XTAL
#define PLL_CLOCK           50000000

void UART1_Init()
{
    /* Reset IP */
    SYS_ResetModule(UART1_RST);

    /* Configure UART1 and set UART1 Baudrate */
    UART_Open(UART1, 115200);
}

int32_t main(void)
{  

    unsigned char  gChar;

    uint32_t  u32Count, u32delayno;


    UART1_Init();
    u32delayno = 0;
     while(uart->FSR & UART_FSR_RX_EMPTY_Msk)  {
            u32delayno++;
            if(u32delayno >= 0x40000000)
                continue;
     }
     gChar = uart->RBR;  //程式無法到此段落, 取得 PC  端傳來的字元 !


}


回复

使用道具

匿名  发表于 2019-10-24 14:24:50
多功能引脚你配置了吗,需要把GPIO配置成UART1
回复 支持 反对

使用道具

匿名  发表于 2019-10-24 15:32:56
打开官网bsp包 里面有接收的例程 .可以认真看下
回复 支持 反对

使用道具

匿名  发表于 2019-10-30 19:13:21
我在 void UART1_Init() 裡面加上 設定, 經過測試還是無法接收, 真的很難喔: 程式如下
#include <stdio.h>
#include "NUC230_240.h"

#define PLLCON_SETTING      SYSCLK_PLLCON_50MHz_XTAL
#define PLL_CLOCK           50000000

void UART1_Init()
{
   CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_HIRC;
   CLK_EnableModuleClock(UART1_MODULE);
   CLK->APBCLK = CLK_APBCLK_UART1_EN_Msk|CLK_APBCLK_UART0_EN_Msk |CLK_APBCLK_TMR1_EN_Msk|CLK_APBCLK_WDT_EN_Msk;//add
    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;
    UART_SetLine_Config(UART1, 9600, UART_WORD_LEN_8, UART_PARITY_EVEN, UART_STOP_BIT_1);
   /* Reset IP */
    SYS_ResetModule(UART1_RST);

    /* Configure UART1 and set UART1 Baudrate */
    UART_Open(UART1, 115200);
}

int32_t main(void)
{  

    unsigned char  gChar;

    uint32_t  u32Count, u32delayno;


    UART1_Init();
    u32delayno = 0;
     while(uart->FSR & UART_FSR_RX_EMPTY_Msk)  {
            u32delayno++;
            if(u32delayno >= 0x40000000)
                continue;
     }
     gChar = uart->RBR;  //程式無法到此段落, 取得 PC  端傳來的字元 !


}
回复 支持 反对

使用道具

匿名  发表于 2019-10-30 19:14:36
我在 void UART1_Init() 裡面加上 設定, 經過測試還是無法接收, 真的很難喔: 程式如下
#include <stdio.h>
#include "NUC230_240.h"

#define PLLCON_SETTING      SYSCLK_PLLCON_50MHz_XTAL
#define PLL_CLOCK           50000000

void UART1_Init()
{
   CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_HIRC;
   CLK_EnableModuleClock(UART1_MODULE);
   CLK->APBCLK = CLK_APBCLK_UART1_EN_Msk|CLK_APBCLK_UART0_EN_Msk |CLK_APBCLK_TMR1_EN_Msk|CLK_APBCLK_WDT_EN_Msk;//add
    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;
    UART_SetLine_Config(UART1, 9600, UART_WORD_LEN_8, UART_PARITY_EVEN, UART_STOP_BIT_1);
   /* Reset IP */
    SYS_ResetModule(UART1_RST);

    /* Configure UART1 and set UART1 Baudrate */
    UART_Open(UART1, 9600);
}

int32_t main(void)
{  

    unsigned char  gChar;

    uint32_t  u32Count, u32delayno;


    UART1_Init();
    u32delayno = 0;
     while(uart->FSR & UART_FSR_RX_EMPTY_Msk)  {
            u32delayno++;
            if(u32delayno >= 0x40000000)
                continue;
     }
     gChar = uart->RBR;  //程式無法到此段落, 取得 PC  端傳來的字元 !


}
回复 支持 反对

使用道具

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU