#include "STM32F10x_LIB.H"
void RCC_Configuration(void)//时钟设置
{
//使能UART1时钟和A口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
}
void GPIO_Configuration(void) //IO口设置 PA9.10是默认的USART1接口
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //选择引脚0,1 (选择相应的管脚)
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50M(设置输出的频率)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //带上拉输出 (设置为何种输出或何种输入)
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA0,1引脚
}
void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStructure; //串口参数初始化
//初始化参数设置
USART_InitStructure.USART_BaudRate = 9600; //波特率9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长8位
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_Rx | USART_Mode_Tx;//打开Rx接收和Tx发送功能
USART_Init(USART1, &USART_InitStructure); //初始化
USART_Cmd(USART1, ENABLE); //启动串口
}
int main()
{
u16 i=0;
RCC_Configuration(); //时钟初始化
GPIO_Configuration();//IO口初始化
USART_Configuration();//串口初始化
while(1)
{
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);//等待接收完毕
i =(USART_ReceiveData(USART1));//把接收到的数据赋给i
if(i==2)
GPIO_SetBits(GPIOA, GPIO_Pin_1);
}
}
当我通过串口用16进制数发送2给板子时接收不到!!
请那位懂得帮忙解决一下 |