电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【STM32F412-DISCO 开发板试用体验】+串口实验
【STM32F412-DISCO 开发板试用体验】+串口实验
开发
黄莨元
LV5工程师
| 2017-04-29 00:58:37
浏览量 1889
回复:4
发表新帖
今天测试了
STM32412G-DISCOVERY
开发板的串口输出功能,大家都知道,串口是
MCU
的重要外部接口,在进行软件开发时,可以使用串口进行调试,所以串口是非常重要的,接下来介绍一下串口的使用。
(一)
串口的介绍
简介:通用同步异步收发器
(USART)
能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准
NRZ
异步串行数据格式的要求。
USART
通过小数波特率发生器提供了多种波特率。它支持同步单向通信和半双工单线通信;还支持
LIN
(局域互连网络)、智能卡协议与
IrDA
(红外线数据协会)
SIR ENDEC
规范,以及调制解调器操作
(CTS/RTS)
。而且,它还支持多处理器通信。通过配置多个缓冲区使用
DMA
可实现高速数据通信。
功能说明:接口通过三个引脚从外部连接到其它设备。任何
USART
双向通信均需要至少两个引脚:接收数据输入引脚
(RX)
和发送数据引脚输出
(TX)
。
RX
:接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从而用于恢复数据。
TX
:发送数据输出引脚。如果关闭发送器,该输出引脚模式由其
I/O
端口配置决定。如果使能了发送器但没有待发送的数据,则
TX
引脚处于高电平。在单线和智能卡模式下,该
I/O
用于发送和接收数据(
USART
电平下,随后在
SW_RX
上接收数据)。
两种模式的介绍:
(二)
硬件连接
我使用了芯片上的串口
2
外设,也就是
PA2
、
PA3
引脚。
(三)
软件分析
串口的使用是比较简单的,而且串口的最基本设置是波特率的设置,在软件方面配置的思路为,开启需要用到的串口时钟,设置对应
IO
口的模式,设置波特率,数据位长度,奇偶检验位就可以了。
接下来着重介绍两个函数:
第一个:串口初始化函数
UART_HandleTypeDef
的结构体成员如下:
Instance
:是
USART_TypeDef
结构体指针类型变量,它是执行寄存器基地址,实际上这个基地址
HAL
库已经定义好了,如果是串口
2
,取值为
USART2
即可。
Init
:是
UART_InitTypeDef
结构体类型变量,它是用来设置串口的各个参数,包括波特率,
停止位等。
UART_InitTypeDef
结构体定义如下:
这个结构体很重要,现在来介绍一下结构体的参数。
BaudRate:
波特率
WordLength
:数据的长度
StopBits
:停止位
Parity
:奇偶检验
Mode
:收
/
发模式设置
HwFlowCtl
:硬件流设置
OverSampling
:过采样设置
结构体的基本配置如下所示,波特率为形参变量,可以在函数调用时进行配置
第二个函数:
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
上面这个函数会被
HAL_UART_Init
函数调用,实现的功能是开启相应的时钟,配置好相应
IO
口的状态,使能串口中断的通道。
另外需要重定义
fputc
函数,如下
到这里已经基本介绍完串口的使用了,编译好程序看看效果吧
:sleepy:最后,感谢云汉社区和ST给予了我这次试用的机会。
今天测试了
STM32412G-DISCOVERY
开发板的串口输出功能,大家都知道,串口是
MCU
的重要外部接口,在进行软件开发时,可以使用串口进行调试,所以串口是非常重要的,接下来介绍一下串口的使用。
(一)
串口的介绍
简介:通用同步异步收发器
(USART)
能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准
NRZ
异步串行数据格式的要求。
USART
通过小数波特率发生器提供了多种波特率。它支持同步单向通信和半双工单线通信;还支持
LIN
(局域互连网络)、智能卡协议与
IrDA
(红外线数据协会)
SIR ENDEC
规范,以及调制解调器操作
(CTS/RTS)
。而且,它还支持多处理器通信。通过配置多个缓冲区使用
DMA
可实现高速数据通信。
功能说明:接口通过三个引脚从外部连接到其它设备。任何
USART
双向通信均需要至少两个引脚:接收数据输入引脚
(RX)
和发送数据引脚输出
(TX)
。
RX
:接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从而用于恢复数据。
TX
:发送数据输出引脚。如果关闭发送器,该输出引脚模式由其
I/O
端口配置决定。如果使能了发送器但没有待发送的数据,则
TX
引脚处于高电平。在单线和智能卡模式下,该
I/O
用于发送和接收数据(
USART
电平下,随后在
SW_RX
上接收数据)。
两种模式的介绍:
(二)
硬件连接
我使用了芯片上的串口
2
外设,也就是
PA2
、
PA3
引脚。
(三)
软件分析
串口的使用是比较简单的,而且串口的最基本设置是波特率的设置,在软件方面配置的思路为,开启需要用到的串口时钟,设置对应
IO
口的模式,设置波特率,数据位长度,奇偶检验位就可以了。
接下来着重介绍两个函数:
第一个:串口初始化函数
UART_HandleTypeDef
的结构体成员如下:
Instance
:是
USART_TypeDef
结构体指针类型变量,它是执行寄存器基地址,实际上这个基地址
HAL
库已经定义好了,如果是串口
2
,取值为
USART2
即可。
Init
:是
UART_InitTypeDef
结构体类型变量,它是用来设置串口的各个参数,包括波特率,
停止位等。
UART_InitTypeDef
结构体定义如下:
这个结构体很重要,现在来介绍一下结构体的参数。
BaudRate:
波特率
WordLength
:数据的长度
StopBits
:停止位
Parity
:奇偶检验
Mode
:收
/
发模式设置
HwFlowCtl
:硬件流设置
OverSampling
:过采样设置
结构体的基本配置如下所示,波特率为形参变量,可以在函数调用时进行配置
第二个函数:
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
上面这个函数会被
HAL_UART_Init
函数调用,实现的功能是开启相应的时钟,配置好相应
IO
口的状态,使能串口中断的通道。
另外需要重定义
fputc
函数,如下
到这里已经基本介绍完串口的使用了,编译好程序看看效果吧
:sleepy:最后,感谢云汉社区和ST给予了我这次试用的机会。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
2
速度之上
2017-05-06
看起来好厉害的样子哦
1
回复
举报
发布
黄莨元
回复
2017-05-06
:P我好像在发烧友看到一个一样的名字:lol你厉害哦:D
0
回复
举报
发布
野蛮人
2017-05-05
:lol加油
0
回复
举报
发布
×
举报
举报人:
被举报人:黄莨元
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子