完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想用NUC131单片机UART3作为打印口,但printf没有输出东西,UART10、UART1、UART2作为打印口printf都可以正常输出,请教一下大神们,我的配置是否有问题??
void SYS_Init(void) { /* Enable Internal RC 22.1184MHz clock */ CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk); /* Waiting for Internal RC clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk); /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */ CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1)); /* Enable external XTAL 12MHz clock */ CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk); /* Waiting for external XTAL clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk); /* Set core clock as PLL_CLOCK from PLL */ CLK_SetCoreClock(PLL_CLOCK); CLK_EnableModuleClock(UART3_MODULE); /* Select UART module clock source */ CLK_SetModuleClock(UART3_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1)); CLK_EnableModuleClock(UART2_MODULE); /* Select UART module clock source */ CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1)); /* Init I/O Multi-function */ /*---------------------------------------------------------------------------------------------------------*/ // UART3 SYS->GPA_MFP &= ~(SYS_GPA_MFP_PA5_Msk | SYS_GPA_MFP_PA6_Msk); SYS->GPA_MFP |= SYS_GPA_MFP_PA5_UART3_RXD | SYS_GPA_MFP_PA6_UART3_TXD; // UART2 SYS->GPD_MFP &= ~(SYS_GPD_MFP_PD14_Msk | SYS_GPD_MFP_PD15_Msk); SYS->GPD_MFP |= SYS_GPD_MFP_PD14_UART2_RXD | SYS_GPD_MFP_PD15_UART2_TXD; } void UART_Init() { SYS_ResetModule(UART2_RST); UART_Open(UART2, 115200); SYS_ResetModule(UART3_RST); UART_Open(UART3, 115200); } |
|
相关推荐
2个回答
|
|
er = 1 */ CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1)); /* Enable UART3 module clock */ CLK_EnableModuleClock(UART3_MODULE); /* Set P1 multi-function pins for UART3 RXD and TXD */ SYS->P1_MFP &= ~(SYS_MFP_P12_Msk | SYS_MFP_P13_Msk); SYS->P1_MFP |= SYS_MFP_P12_RXD3 | SYS_MFP_P13_TXD3; /* Select UART3 multi-function pins */ SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk); SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART3_RXD | SYS_GPB_MFP_PB1_UART3_TXD; /* Set UART3 defalut baud rate to 115200 */ UART_Open(UART3, 115200);} int main(void){ /* Init System, UART3 */ SYS_Init(); /* Loop Test */ while(1){ /* Print "Hello World" to UART3 */ printf("Hello Worldn"); } return 0; }
|
|
|
|
你的代码和描述,你的配置看起来应该是正确的。但是,为了使printf能够通过UART3输出,你可能需要确保你的系统中有正确的重定向函数。printf函数通常会调用一个底层的字符输出函数,例如putchar或_write,需要确保这个函数能够将字符发送到UART3。
默认情况下,printf函数是配置为通过UART0发送字符的。但是,用户可以通过更改DEBUG PORT的定义和printf()传输端口的定义来使其符合系统架构1。因此,可能需要检查并可能修改你的retarget.c文件以确保printf函数使用UART3而不是其他UART端口。 |
|
|
|
只有小组成员才能发言,加入小组>>
3124 浏览 9 评论
2820 浏览 16 评论
3333 浏览 1 评论
8704 浏览 16 评论
3922 浏览 18 评论
9541浏览 3评论
875浏览 3评论
443浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
446浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2171浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 01:44 , Processed in 0.761780 second(s), Total 48, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号