完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
记录下这两天在使用库函数配置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使能的时候就已经将其配置为复用功能输出了。 想请教一下各位大侠,小弟这样的思维过程是否合理?欢迎交流指正。 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】简介、环境搭建、工程测试
177 浏览 0 评论
312 浏览 0 评论
imx6ull裸机编程,使用宏定义无法驱动,使用指针就可以驱动
691 浏览 1 评论
《DNK210使用指南 -CanMV版 V1.0》第三十二章 音频FFT实验
384 浏览 0 评论
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1284 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11620 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 04:54 , Processed in 0.588319 second(s), Total 67, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号