大神帮我看看,这个串口在keil不报错,可是在串口助手中没法接收数据,大神帮我看看哪里有问题
#include "stm32f10x_conf.h"
#include "stm32f10x_usart.h"
void usart_init (void)
{
//定义参数
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
//使能及复用时钟
RCC_APB2PeriphClockCmd (//RCC_APB2Periph_AFIO| //串口重映射功能PB10 PB11
RCC_APB2Periph_GPIOA|
RCC_APB2Periph_USART1,ENABLE);
//PA9复用推挽50M输出 PA10上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PA10 上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//串口复位
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
//串口初始化结构体
USART_InitStructure.USART_BaudRate =9600;
USART_InitStructure.USART_WordLength =USART_WordLength_8b;
USART_InitStructure.USART_StopBits =USART_StopBits_1;
USART_InitStructure.USART_Parity =USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode =(USART_Mode_Tx|USART_Mode_Rx);
USART_Init(USART1,&USART_InitStructure);
//串口整体使能
USART_Cmd(USART1, ENABLE);
}
char data;
void usart_senddata (char data)
{
USART_SendData(USART1, data);
}
char usart_receive (void)
{
data=USART_ReceiveData(USART1);
return data;
}
#include "stm32f10x_conf.h"
//#include "stm32f10x_rcc.h"
#include "USART.H"
#include "stm32f10x_usart.h"
extern char data;
int main (void)
{
usart_init ();
while(1)
{
usart_senddata (usart_receive());
}
} |