|
解决无法接收标准帧的问题,程序如图
更正串口的初始化程序
void UartInit(UART_TypeDef* UARTx,int BaudRate)
{
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);
GPIO_PinAFConfig(GPIOA, GPIO_Pin_9 | GPIO_Pin_10, GPIO_AF_UART_1); //PA9、PA10复用为串口1
#if 0
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //uart1_tx PA9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 推免复用输出
// GPIO_Init(GPIOA, &GPIO_InitStructure);
#endif
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 |GPIO_Pin_10; //uart1_rx PA10
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
UART_InitStructure.UART_BaudRate = 115200; //波特率
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);
//这里需要进行接收,所以要打开接收中断
//UART_ITConfig(UARTx, UART_IT_RXIEN, ENABLE);//使能接收中断
//NVIC_SetPriority(UART1_IRQn, 3);
//NVIC_EnableIRQ(UART1_IRQn);
} |
|