|
仿制串口1,
修改串口2初始化语句
void UartInit2(UART_TypeDef* UARTx,int BaudRate)
{
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //uart2_tx PA2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 推免复用输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //uart2_rx PA3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_Pin_2 | GPIO_Pin_3, GPIO_AF_UART_2345); //PA2、PA3复用为串口2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART2, ENABLE);
UART_InitStructure.UART_BaudRate = BaudRate; //波特率
UART_InitStructure.UART_WordLength = UART_WordLength_8b;//数据位
UART_InitStructure.UART_StopBits = UART_StopBits_1;//停止位
UART_InitStructure.UART_Parity = UART_Parity_No ;
UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;//输入输出模式
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_Init(UARTx, &UART_InitStructure);
UART_Cmd(UARTx, ENABLE); //UART 模块使能
UART_ClearITPendingBit(UARTx, 0xff);
}
u8 Uart2_Receive(void)
{
//判断数据是否到来
while((UART2->CSR & (1<<1)) ==0);
return UART2->RDR;
}
void send_data2(u8 data)
{
while((UART2->CSR &0x1) == 0);
UART2->TDR = data;
}
void send_group2(u8*data,u16 len)
{
while(len--)
send_data2(*data++);
}
调用
UartInit2(UART2,9600);
send_str2("test");
串口1能正常接收数据的,串口2没反应,由于串口2挂有WIFI模块,这个有没有影响? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|