CH32X033 PC18 口如何映射成USART3 TX的功能

我在用CH32X033開發(fā)中,需要將調(diào)試信息通過USART3發(fā)送出來(lái)。

只有PC18口可以重新映射到TX3。

我在debug.c的初始化代碼如下

#if(DEBUG == DEBUG_UART3)

? ? GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);

? ? GPIO_PinRemapConfig(GPIO_PartialRemap1_USART3, ENABLE);

? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_18;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? ? GPIO_Init(GPIOC, &GPIO_InitStructure);


但用printf發(fā)送的信息完全無(wú)效。請(qǐng)指導(dǎo)一下該如何設(shè)置。謝謝


要最先把 AFIO 的時(shí)鐘打開。


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);

這里已經(jīng)開了AFIO時(shí)鐘。

我試過

void GPIO_Toggle_PC18(void)

{

? ? GPIO_InitTypeDef GPIO_InitStructure = {0};


? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);

? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_18;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOC, &GPIO_InitStructure);

}


然后

GPIO_WriteBit(GPIOC, GPIO_Pin_18,0)

GPIO_WriteBit(GPIOC, GPIO_Pin_18,1)

PC18可以正確輸出高低電平。

說(shuō)明PC18可以作為普通IO輸出狀態(tài)。

但是重新映射卻找不到相關(guān)說(shuō)明。只能請(qǐng)?jiān)瓘S解決。


您好,可以參考下圖配置試一下,注意下載完成后重新上電試一下。后續(xù)若有問題,可郵箱(lzs@wch.cn)溝通。

image.png


謝謝TECH62,剛驗(yàn)證完畢,你的做法可以成功。


重新驗(yàn)證了一遍,如果把以下這行指令

? ? GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

不按照你給定的順序執(zhí)行,就不能成功映射USART3 TX。

具體原因應(yīng)該和芯片內(nèi)部設(shè)計(jì)相關(guān),沒有公開文檔,就只能靠原廠支持了。


再次感謝沁恒的快速支援。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频