int32_t main() { STR_UART_T sParam; UNLOCKREG(); DrvSYS_Open(50000000); LOCKREG(); DrvGPIO_InitFunction(E_FUNC_UART0); // Set UART pins /* UART Setting */ sParam.u32BaudRate = 9600; sParam.u8cDataBits = DRVUART_DATABITS_8; sParam.u8cStopBits = DRVUART_STOPBITS_1; sParam.u8cParity = DRVUART_PARITY_NONE; sParam.u8cRxTriggerLevel= DRVUART_FIFO_1BYTES; /* Set UART Configuration */ if(DrvUART_Open(UART_PORT0,&sParam) != E_SUCCESS); DrvUART_EnableInt(UART_PORT0, DRVUART_RDAINT, UART_INT_HANDLE); init_LCD(); // initialize LCD panel clear_LCD(); // clear LCD panel print_Line(0, "Smpl_UART0_HC05"); // print title while(1) { } //DrvUART_Close(UART_PORT0); }
BOOL xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity ) { BOOL bInitialized = TRUE; STR_RS485_T RS485FnPara; STR_UART_T Uart0Param; ucPORT = ucPORT; //清楚为使用报警. switch (ucDataBits){ //配置数据位长度,该移植默认使用8位数据位 case 8: break; default: bInitialized = FALSE; } Uart0Param.u32BaudRate = ulBaudRate; //配置波特率 switch(eParity){ //配置字节格式 case MB_PAR_EVEN: //偶校验 Uart0Param.u8cDataBits = DRVUART_DATABITS_8; //8位数据位 Uart0Param.u8cStopBits = DRVUART_STOPBITS_1; //1位停止位 Uart0Param.u8cParity = DRVUART_PARITY_EVEN; //偶校验 break; case MB_PAR_ODD: //奇校验 Uart0Param.u8cDataBits = DRVUART_DATABITS_8; //8位数据位 Uart0Param.u8cStopBits = DRVUART_STOPBITS_1; //1位停止位 Uart0Param.u8cParity = DRVUART_PARITY_ODD; //奇校验 break; case MB_PAR_NONE: //无校验 Uart0Param.u8cDataBits = DRVUART_DATABITS_8; //8位数据位 Uart0Param.u8cStopBits = DRVUART_STOPBITS_2; //2位停止位 Uart0Param.u8cParity = DRVUART_PARITY_NONE; //无校验 break; default: //偶校验 Uart0Param.u8cDataBits = DRVUART_DATABITS_8; //8位数据位 Uart0Param.u8cStopBits = DRVUART_STOPBITS_1; //1位停止位 Uart0Param.u8cParity = DRVUART_PARITY_EVEN; //偶校验 break; } Uart0Param.u8cRxTriggerLevel= DRVUART_FIFO_46BYTES; //配置接收缓冲区长度 // Uart0Param.u8TimeOut = 0x7f; //配置TIMEOUT时间 if(bInitialized){ //初始化串口 DrvUART_Open(UART_PORT0, &Uart0Param); UART0->MCR.LEV_RTS = 0; RS485FnPara.u8cAddrEnable = 0; RS485FnPara.u8cAddrValue = 0; RS485FnPara.u8cDelayTime = 2; RS485FnPara.u8cModeSelect = MODE_RS485_AUD; //自动方向识别 RS485FnPara.u8cRxDisable = 0; DrvUART_SetFnRS485(UART_PORT0,&RS485FnPara); DrvUART_EnableInt( UART_PORT0, //使能以下中断 //DRVUART_THREINT| //发送保持寄存器空中断 //DRVUART_RLSINT | //线上接收中断,检测BIF,FEF,PEF DRVUART_TOUTINT| //接收数据超时中断 //DRVUART_RDAINT, //接收数据可用中断 0, (PFN_DRVUART_CALLBACK*)UART0Handler); } return bInitialized; }
int main (void) { // uint32_t Temp=0; //================================配置系统时钟==============// UNLOCKREG(); SYSCLK->PWRCON.OSC22M_EN = 1;//default is enabled SYSCLK->PWRCON.XTL12M_EN = 1; SYSCLK->CLKSEL0.HCLK_S = 0;//using 12M as HCLK src // DrvSYS_Delay(5000); Delay(5000) ; DrvSYS_Open(48000000); // DSP_INIT_PIN = 0 ; // LCD_POWER = 1 ; // //===================================================================================// BSP_INIT_UART0(); //init the uart0 GR_DBG_PRINTF("System Is run\n\n"); DrvUART_EnableInt(UART_PORT0,DRVUART_RDAINT | DRVUART_TOUTINT,UART_INT_HANDLE); // //===================================================================================// // Vir_Init() ; //初始化环境变量 ////===============================读取dataflash存储的系统信息=========================// //读取flash中数据 第一次运行读写写入默认值 ////======================================开始任务=====================================// OSInit(); CPU_IntDis() ; // SysTick_Config(120000); // InitValue(); #ifdef THREAD_TEST OSTaskCreateExt(Task2, (void *)0, (OS_STK *)&Task2_Stack[STACK2SIZE-1], Task2_Prio,Task2_Prio,Task2_Stack,STACK2SIZE ,NULL,OS_TASK_OPT_STK_CHK); OSTaskCreateExt(Task1, (void *)0, (OS_STK *)&Task1_Stack[STACK1SIZE-1], Task1_Prio,Task1_Prio,Task1_Stack,STACK1SIZE,NULL,OS_TASK_OPT_STK_CHK); OSTaskCreateExt(Task3, (void *)0, (OS_STK *)&Task3_Stack[STACK3SIZE-1], Task3_Prio,Task3_Prio,Task3_Stack,STACK3SIZE,NULL,OS_TASK_OPT_STK_CHK); // OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_Stack[STACKSIZE-1],SYS_Task_Prio); #endif OSStart(); //===================================================================================// }
/** * @brief UART0 init * * @param None * * @return None * * @details Set UART0 8n1, 115200bps */ void UART0_Init(void) { STR_UART_T sParam; GPIO_UART0(); //En: Set UART0 all pins to PB0=RX,PB1=TX,PB2=RTS,PB3=CTS /* UART Setting */ sParam.u32ClkSrc = CLK_UART_HXT; sParam.u32ClkDiv = 1; sParam.u32ClkFreq = __XTAL; //HXT/1 == __XTAL sParam.u32BaudRate = 115200; sParam.u32cDataBits = UART_WORD_LEN_8; sParam.u32cStopBits = UART_STOP_BIT_1; sParam.u32cParity = UART_PARITY_NONE; sParam.u32cRxTriggerLevel = UART_FCR_RFITL_14BYTES; sParam.u32BaudMode = UART_BAUD_MODE2; sParam.u8RxTimeOut = 200; /* Set UART Configuration */ DrvUART_Init(UART0,&sParam); /* Enable UART Interrupt */ DrvUART_EnableInt(UART0, UART_IER_RDA_IEN|UART_IER_RTO_IEN|UART_IER_TIMEOUT_COUNTER_EN); }