原创 STM32 学习笔记之USART串口功能之一

2013-6-26 20:24 1211 19 19 分类: 消费电子

今天讲讲STM32的串口学习。

串口最基本的设置就是波特率的设置。所以在调用STM32的串口功能前要进行设置:
1.开启串口时钟;
2.设置相应的IO口模式;
3.配置波特率、数据位长度、就校验位
每个串口都有一个自己独立的波特率寄存器USART_BRR。
Tx/Rx波特率=fPCLKx/(16*USARTDIV)
同时需要注意的是:USART和GPIO是两种不同的设备,USART是“借用”了GPIO设备作为自己的输出通道,所以在使用串口功能时,不仅要打开USART时钟,而且还要打开相应GPIO的时钟,同时要将对应GPIO引脚设置为第二功能模式。

贴出串口初始化部分代码,大家共享:

void uart_init(U32 bound) 

{

//GPIO端口设置

    GPIO_InitTypeDef GPIO_InitStructure;                  //定义GPIO端口初始化结构体

USART_InitTypeDef USART_InitStructure;                //定义USART初始化结构体

NVIC_InitTypeDef NVIC_InitStructure;                  // 定义优先级初始化结构体

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);   //使能USART1、GPIOA时钟,将GPIOA设置为第2功能

//USART1_TX   PA.9

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

   

//USART1_RX  PA.10

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOA, &GPIO_InitStructure);  

 

//Usart1 NVIC 配置

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //中断优先级:0 1 2 3

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 中断响应优先级:0 1 2 3

 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1

  

//USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;

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_Rx | USART_Mode_Tx;

 

    USART_Init(USART1, &USART_InitStructure);

 

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断

   

    USART_Cmd(USART1, ENABLE);                    //使能串口 

}

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
19
关闭 站长推荐上一条 /2 下一条