stm 32串口的学习

串口的基本配置 (使用固件库)
stm 32串口的学习
根据这图我们可以知道 stm32 至少会有3个串口
由于自己是使用串口一 所以配置的为usart1
1 时钟使能(用到哪个串口`和GPIO要把相应的时钟开启)
2 串口复位;(一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。)
3 GPIO口配置;
4 串口参数配置;
5 根据需要开启中断

下面的代码部分
一 时钟使能
由于UART的TX和RX和AFIO都挂在APB2桥上,因此采用固件库函数RCC_APB2PeriphClockCmd()进行初始化。UARTx需要分情况讨论,如果是UART1,则挂在APB2桥上,因此采用RCC_APB2PeriphClockCmd()进行初始化,其余的UART2~5均挂在APB1上。


	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

二 时钟复用

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

三 GPIO的配置
定义结构体

	GPIO_InitTypeDef gpioInit_struct;

GPIO的属性包含在结构体GPIO_InitTypeDef,其中对于TX引脚,GPIO_Mode字段设置为GPIO_Mode_AF_PP(复用推挽输出),GPIO_Speed切换速率设置为GPIO_Speed_50MHz;对于RX引脚,GPIO_Mode字段设置为GPIO_Mode_IN_FLOATING(浮空输入),不需要设置切换速率。最后通过GPIO_Init()使能IO口。
配置A9 为 TX

	gpioInit_struct.GPIO_Mode=GPIO_Mode_AF_PP;
	gpioInit_struct.GPIO_Pin=GPIO_Pin_9;
	gpioInit_struct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&gpioInit_struct);

配置A10 为RX

	gpioInit_struct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
	gpioInit_struct.GPIO_Pin=GPIO_Pin_10
	GPIO_Init(GPIOA,&gpioInit_struct);

四 串口参数配置
结构体的定义

	USART_InitTypeDef  usartInit_struct;

UART模式下的字段如下

USART_BaudRate:波特率,视具体设备而定

USART_WordLength:字长

USART_StopBits:停止位

USART_Parity:校验方式

USART_HardwareFlowControl:硬件流控制

USART_Mode:单/双工

配置 usart

	usartInit_struct.USART_BaudRate				=115200;
	usartInit_struct.USART_HardwareFlowControl  =USART_HardwareFlowControl_None;
	usartInit_struct.USART_Mode		=USART_Mode_Rx | 	USART_Mode_Tx;
	usartInit_struct.USART_Parity    =USART_Parity_No;
	usartInit_struct.USART_StopBits  =USART_StopBits_1;
	usartInit_struct.USART_WordLength =USART_WordLength_8b;
	USART_Init(USART1,&usartInit_struct);
	
	//!!
	 USART_Cmd(USART1,ENABLE ); // 启动设备
	
上一篇:下载并显示网上的图片之二(假如是 GIF 图片) - 回复 "fancy" 的问题


下一篇:STM学习方法