TM4C1230E6PM 晶振16M的在485通信 波特率1200时出现怪现象

2019-07-19 13:16发布

TM4C1230E6PM 晶振16M的在485通信 波特率1200时出现怪现象
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
lizye
2019-07-19 23:16
/**********************************************************         串口初始化设置 **********************************************************/

void UART_init(void)

{

//UART2  RS485   

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);   

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);      

GPIOPinConfigure(GPIO_PG4_U2RX);   

GPIOPinConfigure(GPIO_PG5_U2TX);   

ROM_GPIOPinTypeUART(GPIO_PORTG_BASE, GPIO_PIN_4 | GPIO_PIN_5);//设定PG4 PG5为串口        

ROM_UARTConfigSetExpClk(UART2_BASE, ROM_SysCtlClockGet(), 1200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |                              UART_CONFIG_PAR_NONE)); //设定  UART for 115200, 8-N-1 operation   

ROM_IntEnable(INT_UART2); //使能UART2中断   

ROM_UARTIntEnable(UART2_BASE, UART_INT_RX | UART_INT_RT);

}
/**********************************************************

              串口2中断

**********************************************************/

void UART2_Handler(void)

{

         uint32_t ui32Status;



    ui32Status = ROM_UARTIntStatus(UART2_BASE, true);

    //获取中断状态  屏蔽中断状态

  

    ROM_UARTIntClear(UART2_BASE, ui32Status);

    //清除UART中断源

  

    while(ROM_UARTCharsAvail(UART2_BASE))

    {

        //接收数据

                            data_buffer=ROM_UARTCharGetNonBlocking(UART2_BASE);            

                           

                            data_buffer_cfg=1;

    }

}

//*****************************************************************************

//

// 主       函    数

//

//*****************************************************************************

int main(void)

{

       //uint32_t  i;

      

    sys_init();  //系统初始化           

    UART_init(); //串口初始化

    Port_init(); //IO初始化

    ROM_IntMasterEnable();// 使能总中断

    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,~GPIO_PIN_3); //RDE=0

   

    GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,~GPIO_PIN_5);

    GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_6,~GPIO_PIN_6); //LED亮

   

    while(1)

    {

           if(data_buffer_cfg==1)

           {

                  data_buffer_cfg=0;



                  ROM_IntDisable(INT_UART2);

                  GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_PIN_3); //RDE=1

                            //data_buffer= 0xAA;

                            ROM_UARTCharPutNonBlocking(UART2_BASE, data_buffer);

                            //while(UARTBusy(UART2_BASE));   //等待发送完成   

                            delay();

                            ROM_IntEnable(INT_UART2);                 

                            GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,~GPIO_PIN_3); //RDE=0                    

                           

                      }

         

    }

}

一周热门 更多>