stm32学习笔记---串口(原子开发板)
来源:互联网 发布:数据库系统实现 斯坦福 编辑:程序博客网 时间:2024/05/29 08:52
1,STM32的串口资源相当丰富的,功能也相当强劲。ALIENTEK MiniSTM32开发板所使用的STM32F103RCT6最多可提供5路串口,有分数波特率发生器、支持同步单线通信和半双工
单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDA SIR ENDEC规范、具有DMA等。
2,串口设置的一般步骤可以总结为如下几个步骤:
1) 串口时钟使能,GPIO时钟使能
2) 串口复位
3) GPIO端口模式设置
4) 串口参数初始化
5) 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
6) 使能串口
7) 编写中断处理函数
下面,我们就简单介绍下这几个与串口基本配置直接相关的几个固件库函数。这些函数和定义主要分布在stm32f10x_usart.h和stm32f10x_usart.c文件中。
1.串口时钟使能。串口是挂载在APB2下面的外设,所以使能函数为: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1); .串口复位。当外设出现异常的时候可以通过复位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。复位的是在函数USART_DeInit()中完成:
void USART_DeInit(USART_TypeDef* USARTx);//串口复位
比如我们要复位串口1,方法为:
USART_DeInit(USART1); //复位串口1
3.串口参数初始化。串口初始化是通过USART_Init()函数实现的,
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
这个函数的的第一个入口参数是指定初始化的串口标号,这里选择USART1。
第二个入口参数是一个USART_InitTypeDef类型的结构体指针,这个结构体指针的成员变量用
来设置串口的一些参数。一般的实现格式为:
USART_InitStructure.USART_BaudRate = bound; //一般设置为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; //收发模式
USART_Init(USART1, &USART_InitStructure); //初始化串口
从上面的初始化格式可以看出初始化需要设置的参数为:波特率,字长,停止位,奇偶校验位,
硬件数据流控制,模式(收,发)。我们可以根据需要设置这些参数。
4.数据发送与接收。STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是
一个双寄存器,包含了TDR和RDR。当向该寄存器写数据的时候,串口就会自动发送,当收
到收据的时候,也是存在该寄存器内。
STM32库函数操作USART_DR寄存器发送数据的函数是:
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
通过该函数向串口寄存器USART_DR写入一个数据。
STM32库函数操作USART_DR寄存器读取串口接收到的数据的函数是:
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
通过该函数可以读取串口接受到的数据。
5.串口状态。串口的状态可以通过状态寄存器USART_SR读取。
6.串口使能。串口使能是通过函数USART_Cmd()来实现的,这个很容易理解,使用方法
是:
USART_Cmd(USART1, ENABLE); //使能串口
7.开启串口响应中断。有些时候当我们还需要开启串口中断,那么我们还需要使能串口中
断,使能串口中断的函数是:
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT,
FunctionalState NewState)
这个函数的第二个入口参数是标示使能串口的类型,也就是使能哪种中断,因为串口的中断类
型有很多种。比如在接收到数据的时候(RXNE读数据寄存器非空),我们要产生中断,那么我
们开启中断的方法是:
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断,接收到数据中断
我们在发送数据结束的时候(TC,发送完成)要产生中断,那么方法是:
USART_ITConfig(USART1,USART_IT_TC,ENABLE);
8.获取相应中断状态。当我们使能了某个中断的时候,当该中断发生了,就会设置状态寄
存器中的某个标志位。经常我们在中断处理函数中,要判断该中断是哪种中断,使用的函数是:
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)
比如我们使能了串口发送完成中断,那么当中断发生了, 我们便可以在中断处理函数中调用这
个函数来判断到底是否是串口发送完成中断,方法是:
USART_GetITStatus(USART1, USART_IT_TC)
返回值是SET,说明是串口发送完成中断发生。
- stm32学习笔记---串口(原子开发板)
- STM32学习笔记-串口
- STM32学习笔记(串口、IAP)
- STM32学习笔记(串口、IAP)
- STM32学习笔记(二)------串口实验
- STM32学习笔记(4):原子操作(Atomatic Operations)
- UCOS_III(原子战舰STM32)学习笔记一
- 原子STM32学习笔记--system文件夹
- 跟着原子学习stm32之串口IAP下载
- STM32-串口实验学习笔记
- 原子stm32 mini开发板模版
- STM32学习笔记(7):USART串口的使用
- STM32学习笔记(7):USART串口的使用
- STM32学习笔记(7):USART串口的使用
- STM32学习笔记(7):USART串口的使用
- stm32学习笔记(三)串口通讯实验
- stm32串口学习(一)
- stm32串口学习(二)
- Android可滚动视图隐藏Toolbar实现
- Python XML-PRC server
- 随笔(2015.3)
- 番茄花园Ghost Win10系统X64位10041装机版2015年4月
- 背包问题求解 - java
- stm32学习笔记---串口(原子开发板)
- HTML高级标签之表格标签
- ios-day18-02(通过CALayer做出跟UIImageView一样的效果、UIView和CALayer如何选择)
- [Spark | Yarn | Hadoop] Spark Submit over Yarn
- Myeclipse tomcat 部署项目Unknown Source异常
- GDI+ 双缓冲 的起因以及解决办法
- Arrays.asList方法总结
- NUMERIC_ROUNDABORT
- 新萝卜家园Ghost版Win10系统X32极速装机版2015年4月