|
趁着今天不是很忙,继续鼓捣下STM32F030 Nucleo64这块板子,这次我们来玩玩串口通信。咱们当码农电工的,往往在做项目调试代码的时候,想查看一些信息,但是呢,项目不需要LCD等显示模块,除了用软件仿真来查看外,串口也是一个经济实惠快捷的选择。 串口作为单片机和外部一个比较重要的通信接口,同时也是咱们码农调试代码的好工具,其重要性不言而喻了。STM32F030R8这颗芯片自带2路串口,咱们这次玩USART2,因为nucelo64这块板子板载虚拟串口,就是USART2。 串口的配置可以总结为以下几点: (1)串口和GPIO的时钟使能 (2)串口复位 (3)GPIO模式设置 (4)串口参数初始化 (5)打开中断(也可以用查询方式,这里不讲) (6)使能串口 (7)既然开了中断,那么就要写串口中断服务函数 下面,我们开始简单介绍下完成上面步骤的几个库函数,可以打开stm32f0xx_usart.c和stm32f0xx_usart.h这两个文件查看。 (1)使能对应外设时钟 相信这一点经过上一贴的描述,大家应该都可以完成,那么下面就直接贴代码了
(2)串口复位 在外设初始化的时候,可以考虑让外设重新复位,每一个相关的寄存器恢复到默认值,其实我个人做项目的时候也没用到复位,也没发现啥问题,各位也可以尝试下
(3)GPIO模式配置 由于USART2是占用了PA2和PA3这两个IO,需要启动GPIO复用功能,采用GPIO_PinAFConfig这个函数来设置,可以参考STM32F030R8数据手册,如下图所示:
具体代码如下:
(4)串口参数初始化 我们可以打开库函数stm32f0xx_usart.c和stm32f0xx_usart.h这两个文件,串口的初始化是由void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)这个函数来实现的。 这个函数的第一个入口参数是指定初始化的串口标号,这里选择 USART2。 第二个入口参数是一个 USART_InitTypeDef 类型的结构体指针,这个结构体指针的成员变量用来设置串口的一些参数。我们可以打开库函数看看:
实现方式如下:
(5)打开中断 使能串口中断的函数是:
(6)使能串口 这个最简单 ![]() ![]() ,一个库函数搞掂~~~
(7)编写中断服务函数 既然你打开了中断,那么中断响应之后,肯定得干些事情,这时候,就轮到中断服务函数出场了~~~ 中断服务函数的名字不能随便定义,我们可以打开系统启动文件startup_stm32f030.s文件,在里面可以查看到这颗芯片所有外设的中断服务函数的名字
本次例程要实现的功能是串口的接收和发送,中断服务函数代码如下:
贴上工程代码:
STM32F030_USART2.rar
(1.75 MB, 下载次数: 121)
|
| 感谢楼主分享 |
| 感谢楼主分享 |
| 谢楼主分享 |
| 你好,我用这个串口程序,发送数据可以,但是接收数据出现问题,怎么回事啊 |
|
感谢楼主分享 |
| 学习,总结的好 |
| 看了之后大有启发,谢谢楼主了 |
| 感谢楼主分享 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版