完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问一下各位大大,NUC230的GPIO复用成为UART时,必须去设置不同的IO复用在UART上,我看工程范例中写到
/* Set GPB multi-function pins for UART0 RXD and TXD */ SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk); SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD; 想问为什么要如此操作,可以改写成下面方式执行嘛? SYS->GPB_MFP = SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD; |
|
相关推荐
1个回答
|
|
在将GPIO复用成UART时,需要设置不同的IO复用方式,并将它们配置为UART的接收和发送引脚。这是因为GPIO可以被配置为多种不同的功能,例如GPIO、ADC、I2C、SPI等等,每种功能都有不同的引脚复用方式。因此,在将GPIO用作UART时,需要指定引脚的复用方式。
在NUC230中,使用SYS->GPB_MFP寄存器来配置GPIO引脚的复用方式。该寄存器的每个位都对应一个GPIO引脚,设置为1表示将该引脚配置为相应的功能。因此,在将GPIO复用为UART时,需要将PB0和PB1引脚配置为UART0的接收和发送引脚,而不是其他功能,例如ADC或I2C。 因此,将GPB_MFP设置为SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD并不足够,因为其他GPB引脚的状态可能被清除了。正确的操作是先将GPB_MFP的相应位清零,然后再设置为UART0的引脚,如下所示: SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk); //清零PB0和PB1引脚的状态 SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD; //将PB0和PB1引脚配置为UART0接收和发送引脚 |
|
|
|
只有小组成员才能发言,加入小组>>
3277 浏览 9 评论
2950 浏览 16 评论
3454 浏览 1 评论
8983 浏览 16 评论
4044 浏览 18 评论
1092浏览 3评论
566浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
561浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2297浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1854浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 16:21 , Processed in 0.982359 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号