#include "uart.h" bool is_recive_data=false; bool at_cipmode_flag=false;//是否透传 uint8_t RxBuff[255]; uint8_t RxLen=0; void uart1_init(void) { /* 配置串口1:先配置IO口模式,再配置串口 */ GPIOA_SetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入 GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平 UART1_BaudRateCfg(uart_param.baud); switch (uart_param.parity) { case NO_PARITY: R8_UART1_LCR = RB_LCR_WORD_SZ; break; case ODD_PARITY: R8_UART1_LCR =RB_LCR_WORD_SZ|RB_LCR_PAR_EN; break; case EVEN_PARITY: R8_UART1_LCR =RB_LCR_WORD_SZ|RB_LCR_PAR_EN|0x10; break; default: R8_UART1_LCR = RB_LCR_WORD_SZ; break; } R8_UART1_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 R8_UART1_IER = RB_IER_TXD_EN; R8_UART1_DIV = 1; UART1_ByteTrigCfg(UART_7BYTE_TRIG); UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT); PFIC_EnableIRQ(UART1_IRQn); } uint32_t uart1_get_baud(void) { return uart_param.baud; } void uart1_reset(void) { UART1_Reset(); } /********************************************************************* * @fn UART1_IRQHandler * * @brief UART1中断函数 * * @return none */ //__INTERRUPT //__HIGH_CODE //void UART1_IRQHandler(void) //{ // volatile uint8_t i; // uint8_t tmpRxBuff[100]; // // switch(UART1_GetITFlag()) // { // case UART_II_LINE_STAT: // 线路状态错误 // { // //UART1_GetLinSTA(); // break; // } // // case UART_II_RECV_RDY: // 数据达到设置触发点 // for(i = 0; i != 6; i++)//设置为7字节触发,但是只取6字节,保证一定能进超时回调 // { // tmpRxBuff[i] = UART1_RecvByte(); // } // memcpy(&RxBuff[RxLen],tmpRxBuff,i); // RxLen=RxLen+i; // break; // // case UART_II_RECV_TOUT: // 接收超时,暂时一帧数据接收完成 // RxLen = RxLen+UART1_RecvString(&RxBuff[RxLen]); // is_recive_data=true; // break; // // case UART_II_THR_EMPTY: // 发送缓存区空,可继续发送 // break; // // case UART_II_MODEM_CHG: // 只支持串口0 // break; // // default: // break; // } //}