電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 26|回復(fù): 0
收起左側(cè)

開(kāi)發(fā)攻略之STM32調(diào)試端口的映射~

[復(fù)制鏈接]

435

主題

435

帖子

2246

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
2246
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-8-3 08:01:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
點(diǎn)擊上方藍(lán)字關(guān)注我們最近有一個(gè)項(xiàng)目用到了STM32F103RB系列單片機(jī),由于引腳數(shù)量較少,不得不使用到了單片機(jī)的PB3和PB4兩個(gè)引腳。而這兩個(gè)引腳剛好又是STM32系列的JTAG調(diào)試引腳,如果要用于普通IO的功能需要先進(jìn)行一定的設(shè)置。一、STM32的調(diào)試方式選擇
STM32支持JTAG和SWD兩種調(diào)試方式,且默認(rèn)狀態(tài)下這兩種調(diào)試功能都是開(kāi)啟的。
STM32 IOJTAG IOSWD IO
PB3?NC
PB4?NC
PA13??
PA14??
PA15?NC
由此我們可以知道:如果要使用JTAG調(diào)試功能,那么PB3,PB4,PA13,PA14,PA15都不能使用;而如果我們關(guān)閉JTAG功能,但是開(kāi)啟SWD調(diào)試功能,那么PB3,PB4,PA15都可以當(dāng)作普通IO來(lái)使用了;
ST官方3.5的庫(kù)有提供關(guān)閉調(diào)試功能的兩個(gè)接口。
1.1 關(guān)閉所有的JTAG和SWD調(diào)試功能慎用,一旦執(zhí)行該命令,程序運(yùn)行后將不能通過(guò)JTAG或SWD方法進(jìn)行燒寫(xiě)和下載,補(bǔ)救措施見(jiàn)文末。
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);執(zhí)行上面語(yǔ)句后,PB3,PB4,PA13,PA14,PA15都可以當(dāng)作普通iO來(lái)使用,此時(shí)不能通過(guò)J-Link進(jìn)行調(diào)試了;
    1.2 僅關(guān)閉JTAG調(diào)試功能該方法的好處是,解放了JTAG功能占用的引腳,但是SWD調(diào)試功能依舊可以使用。
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);執(zhí)行上面語(yǔ)句后,PB3,PB4,PA15都可以當(dāng)作普通iO來(lái)使用,且可以通過(guò)SWD進(jìn)行調(diào)試。
    二、關(guān)閉調(diào)試方式后如何更新程序以及仿真
    2.1 關(guān)閉JTAG如何更新程序關(guān)閉JTAG調(diào)試功能以后,STM32不再支持在線仿真,且更新程序也需要通過(guò)一定操作才可以完成。此方法在開(kāi)發(fā)階段慎用!
    建議程序啟動(dòng)時(shí)延時(shí)3-5秒后再關(guān)閉JTAG調(diào)試模式,如此,單片機(jī)斷電復(fù)位后立即點(diǎn)擊燒寫(xiě)按鈕也是可以進(jìn)行程序燒錄的。
    2.2 關(guān)閉JTAG及SWD調(diào)試功能后的補(bǔ)救措施補(bǔ)救措施一:
    設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0)或設(shè)置啟動(dòng)模式為RAM運(yùn)行模式(BOOT0=1、BOOT1=1)。
    將開(kāi)發(fā)板斷電后重新上電,此時(shí)就因不是在用戶程序模式,因此就不會(huì)執(zhí)行禁用JTAG的語(yǔ)句,JTAG功能也就可以正常使用。
    補(bǔ)救措施二:
    設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0),用ISP程序?qū)TM32的FLASH擦除,之后就可恢復(fù)JTAG功能。
    補(bǔ)救措施三:
    如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。直接將仿真器的模式設(shè)為SWD模,就可以不受這個(gè)禁止JTAG功能的影響了。

    歡迎轉(zhuǎn)發(fā)分享給需要的好友!

    微信號(hào):zls_it
    掃描下方二維碼添加充電站小助手微信,可以加入微信交流群
    群內(nèi)每天分享一些大廠的經(jīng)典C語(yǔ)言語(yǔ)、C++面試題及知識(shí)點(diǎn)解析、技術(shù)話題分
    享,易混淆的概念答疑等,等你來(lái)GET!!!
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表