处理器与外部设备通信的两种方式:

1.并行串口

可以理解为要连接的时候用了很多条线来连接。比如6条,然后6条线同时传输数据

2.串行通信

一条线,传输数据,一个一个的传输,比如总数20,他一条线的速度5,需要穿4秒,这样,然后并行串口酒需要20/6=秒。

                                串行通信

按数据传送方向:

单工:只允许一个方向

半双工:允许两个方向,但是不能同时传送

全双工:允许同时2个方向的传送


按通信方式:

同步通信:带时钟信号的传输(SPI)

异步通信:不带时钟信号的传输(USART),所以需要设置波特率,通过波特率来解析你传输的数据

                        常用串行通信接口:

 UART正常接口就是TXD(数据输出引脚)接RXD(数据输入引脚)。RXD接TXT。GND与GND连接

代码编写:


1.使能串口与使能时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);    //使能USART1,GPIOA时钟

2.初始化GPIO

定义结构体

GPIO_InitTypeDef GPIO_IniStrue;//定义结构体

随后进行初始化

	GPIO_Inistrue.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_Inistrue.GPIO_pin=GPIO_PIN_9;
	GPIO_Inistrue.GPIO_Speed=GPIO_Speed_10MHz;
	
		GPIO_Inistrue.GPIO_Mode=GPIO_Mode_IN_FLOATTNG;
	GPIO_Inistrue.GPIO_pin=GPIO_PIN_10;
	GPIO_Inistrue.GPIO_Speed=GPIO_Speed_10MHz;
	
	
	
	GPIO_Init(GPIOA,&GPIO_IniStrue)

3.初始化USART

首先定义结构体

USART_InitTypeDef USART_IniStrue;//定义结构体

进行初始化

	USART_IniStrue.USART_BaudRate = 115200;//串口波特率
	USART_IniStrue.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
	USART_IniStrue.USART_StopBits = USART_StopBits_1;//一个停止位
	USART_IniStrue.USART_Parity = USART_Parity_No;//无奇偶校验位
	USART_IniStrue.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
	USART_IniStrue.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
	USART_Init(USART1,&USART_IniStrue);

4.使能串口

	USART_Cmd(USART1,ENABLE);

5.开启中断并初始化NVIC

	NVIC_InitTypeDef NVIC_InitStructure;

随后进行初始化

	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器

更多推荐