You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

95 lines
2.4 KiB

#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;
// }
//}