你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8s中UART配置中的RX、TX的GPIO配置问题

[复制链接]
rkw 提问时间:2020-7-19 15:50 /
记录下这两天在使用库函数配置UART2时的碰上的问题与一些想法(以下都将针对UART2来讲)。问题始于:配置UART2时,是否需要配置其TX、RX对应引脚(分别为PD5、PD6)的GPIO(即PD5配置为输出,PD6配置为输入)?
转念一想,TX与RX分别为PD5与PD6的默认复用功能,想必只要使用复用功能就行了,于是去参考手册(RM0016)中查找,GPIO的DDR、CR1与CR2只能设置输入输出的模式,并不能选择复用功能(如图1所示)。

但是在GPIO章的11.7.1节复用功能输入(Alternate function input)提到:
“Alternate function inputs are not selected automatically, you select them by writing to a control bit in the registers of the corresponding peripheral.”,
即是说复用功能的输入模式需要在对应外设寄存器的控制位进行操作才能使用;(For Alternate Function input, you should select floating or pull-up input configuration in the DDR and CR1 registers. 该节提到的另一句,就是说要将PD5的GPIO配置为floating或者pull-up)

而在11.8.1节复用功能输出(Alternate function output)则说:
“Alternate function outputs provide a direct path from a peripheral to an output or to an I/O pad, taking precedence over the port bit in the data output latch register (Px_ODR) and forcing the Px_DDR corresponding bit to 1.”
即是说,复用功能的输出优先级比ODR高,直接强迫DDR设为1。

这两节的信息,按我的理解:即是说,要使用外设功能的输入模式,必须要在对应外设寄存器的控制位进行设置才可使能;而输出模式则是当外设使能时,就可以使用外设的输出模式。总之,关键就是要在对应外设寄存器的控制位使能该寄存器。

那么看来只需对UART2的使能位进行设置就可以了,查询了UART的寄存器表,UARR_CR1的Bit5为UARTD(UART Disable)与使能相关(如图2),并且UARTD=0时,UART enabled。那么只要设置该值为0,就能使用TX与RX了? 如果是这样,那么实际上,我们根本不用做任何操作,UART就已经使能了,因为UARTD复位后的值即为0。
故对PD5,我们需要将它的GPIO配置为floating或者pull-up(复位后的默认值为直接满足条件);而PD6则不需要,因为UART使能的时候就已经将其配置为复用功能输出了。

想请教一下各位大侠,小弟这样的思维过程是否合理?欢迎交流指正。

图1:I/O端口配置总结

图1:I/O端口配置总结

图2:UART_CR1 Bit5

图2:UART_CR1 Bit5
收藏 评论2 发布时间:2020-7-19 15:50

举报

2个回答
butterflyspring 回答时间:2020-7-30 11:49:34
通过例程代码实践,个人认为串口使能是下面这两位,发送和接收器分别单独使能,楼主可以考虑一下
STM8S USART ENABLE.PNG

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

rkw 回答时间:2020-7-30 16:28:49
butterflyspring 发表于 2020-7-30 11:49
通过例程代码实践,个人认为串口使能是下面这两位,发送和接收器分别单独使能,楼主可以考虑一下 ...

有道理,感谢回复!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版