[技术问答] N76E885双串口的问题

[复制链接]
1537|6
 楼主| 云龙起舞 发表于 2018-5-9 16:01 | 显示全部楼层 |阅读模式
求大侠搭救:我用N76E885双串口,在keil中进debug都到不了run to main, 关掉任意一个串口就可以debug run to main


#define SYS_CLK_EN      1
#define SYS_SEL         2
#define SYS_DIV_EN      0                   //0: Fsys=Fosc, 1: Fsys = Fosc/(2*CKDIV)
#define SYS_DIV         1

#define PRE_SCALAR      7
#define WDT_MODE        0

bit BIT_TMP;

UINT8        UART0_RX_FLAG;
UINT8        UART0_RX_BYTE;

UINT8        UART1_RX_FLAG;
UINT8        UART1_RX_BYTE;

/*******************************************************************************
* FUNCTION_PURPOSE: Main function
******************************************************************************/
void main (void)
{
    /* Note
       MCU power on system clock is HIRC (22.1184MHz), so Fsys = 22.1184MHz
    */
   
    Set_All_GPIO_Quasi_Mode();                 //Set all GPIO are Quasi Mode

        UART0_RX_FLAG = 0;
        UART0_RX_BYTE = 0;
       
        UART1_RX_FLAG = 0;
        UART1_RX_BYTE = 0;

   
    InitialUART0_Timer1_Type1(9600);           //UART0 Baudrate initial,T1M=0,SMOD=0
    InitialUART1_Timer3(9600);                      /* 9600 Baud Rate*/

        /* Change system closk source */  
        #if SYS_CLK_EN == 1
            #if   SYS_SEL == 0
                System_Clock_Select(E_HXTEN);   //Fosc = 2~25MHz XTAL
            #elif SYS_SEL == 1
                System_Clock_Select(E_LXTEN);   //Fosc = 32.768KHz XTAL
            #elif SYS_SEL == 2
                System_Clock_Select(E_HIRCEN);  //Fosc = 22.1184MHz Internal RC
            #elif SYS_SEL == 3
                System_Clock_Select(E_LIRCEN);  //Fosc = 10KHz Internal RC
            #elif SYS_SEL == 4
                System_Clock_Select(E_OSCEN);   //Fosc = OSC-In External OSC
            #endif
        #endif
   
    #if SYS_DIV_EN == 1
        CKDIV = SYS_DIV;                    //Fsys = Fosc / (2* CLKDIV) = Fcpu
    #endif

        TA = 0x0AA;
        TA = 0x055;
    #if   PRE_SCALAR == 0
        WDCON = 0x00;
    #elif PRE_SCALAR == 1
        WDCON = 0x01;
    #elif PRE_SCALAR == 2
        WDCON = 0x02;
    #elif PRE_SCALAR == 3
        WDCON = 0x03;
    #elif PRE_SCALAR == 4
        WDCON = 0x04;
    #elif PRE_SCALAR == 5
        WDCON = 0x05;
    #elif PRE_SCALAR == 6
        WDCON = 0x06;
    #elif PRE_SCALAR == 7
        WDCON = 0x07;
    #endif
   
    while(1)
    {
            set_WDTEN;                                  //WDT run

                if( UART0_RX_FLAG )
                {
                        UART0_RX_FLAG = 0;
                        Send_Data_To_UART0( UART0_RX_BYTE );
                }
                if( UART1_RX_FLAG )
                {
                        UART1_RX_FLAG = 0;
                        Send_Data_To_UART1( UART1_RX_BYTE );
                }
        }
}

/******************************************************************************
* FUNCTION_PURPOSE: Serial interrupt, echo received data.
* FUNCTION_INPUTS : P2.0(RXD) serial input
* FUNCTION_OUTPUTS: P0.3(TXD) serial output
******************************************************************************/
void Serial0_ISR (void) interrupt 4
{
    if (RI == 1)
    {
                UART0_RX_FLAG = 1;
                UART0_RX_BYTE = SBUF;
        clr_RI;                                 // Clear RI (Receive Interrupt).
    }
    if (TI == 1)
    {
        clr_TI;                                 // Clear TI (Transmit Interrupt).
    }      
}

/***************************************************************************************
* FUNCTION_PURPOSE: serial-1 interrupt, echo received data.
* FUNCTION_INPUTS:  P2.4(TXD) serial-1 input
* FUNCTION_OUTPUTS: P2.5(RXD) serial-1 output
**************************************************************************************/
void Serial_1_ISR(void) interrupt 15
{

    if (RI_1 == 1)
    {
//                UART1_RX_FLAG = 1;
        //        UART1_RX_BYTE = SBUF_1;
        clr_RI_1;                                 // Clear RI (Receive Interrupt).
    }
    if (TI_1 == 1)
    {
        clr_TI_1;                                 // Clear TI (Transmit Interrupt).
    }      
}
734774645 发表于 2018-5-9 17:25 | 显示全部楼层
下载官方的BSP开发包啊,里面有例子,找个跟你接近的(就是你用到主要的外设的),然后上面修改。或者先跑例子试试。
huangcunxiake 发表于 2018-5-9 23:33 | 显示全部楼层
别debug,直接跑能运行吗
yiyigirl2014 发表于 2018-5-10 10:40 | 显示全部楼层
先跑起来试试,看能否正常运行。
xinpian101 发表于 2018-5-11 18:05 | 显示全部楼层
跑起来了吗
zhuomuniao110 发表于 2018-5-12 22:37 | 显示全部楼层
发现很多人喜欢先debug,逐步运行看看。
小灵通2018 发表于 2018-5-13 12:56 | 显示全部楼层
两个串口独立配置,完成后,可以运行就行了,有时候不要全新Debug。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部