0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用STM32F10xxx SWJ引腳作為標(biāo)準(zhǔn)IO

lcdz66 ? 來源:雨飛工作室 ? 2022-12-23 11:47 ? 次閱讀

本文介紹了如何使用GPIO固件庫來釋放SWJ-DP引腳(串行JTAG調(diào)試端口),并且重用為標(biāo)準(zhǔn)IO。SWJ-DP IO能夠用作標(biāo)準(zhǔn)IOs,它的性能可以達(dá)到標(biāo)準(zhǔn)IO的80%。

09626282-81df-11ed-8abf-dac502259ad0.png

09902938-81df-11ed-8abf-dac502259ad0.png


當(dāng)系統(tǒng)復(fù)位后,會(huì)默認(rèn)把以上引腳復(fù)用為調(diào)試功能:PA15引腳復(fù)位后的主要功能為 JTDI、PB3為JTDO、PB4為JNTRST;如果把這些引腳作為普通引腳使用時(shí),則需要進(jìn)行重映射。通過設(shè)置復(fù)用重映射和調(diào)試I/O配置寄存器 (AFIO_MAPR) 的SWJ_CFG[2:0]位,可以改變上述重映像配置。

09ac55a4-81df-11ed-8abf-dac502259ad0.png

1、硬件描述

LED燈與SWJ-DP引腳相連。

09d6fd18-81df-11ed-8abf-dac502259ad0.png

2、固件描述

提供的GPIO驅(qū)動(dòng)通過一系列的函數(shù)支持所有的GPIO 特性。

首先,SWJ-DP被禁用,SWJ-DP引腳配置為輸出推挽式。5個(gè)LED連接到PA13(JTMS/SWDIO),PA14(JTCK/SWDCLK),PA15(JTDI),PB03(JTDO),PB04(JTRST),這些LED在無限循環(huán)中被翻轉(zhuǎn)。

注意:一旦SWJ-DP被禁用,和主機(jī)的調(diào)試器的連接將斷開。只要JTAG IO仍然禁用,就不能重新建立調(diào)試連接。為了避免這種情況,PB09被連接到一個(gè)按鈕,該按鈕用來禁用或者不禁用JTAG IOs。

●在復(fù)位時(shí)按鈕按下,JTAG IO禁用。

●在復(fù)位時(shí)按鈕沒有按下,JTAG不改變。

3、注意事項(xiàng)

重映射的方式一共有三種。分別描述如下:

1.GPIO_Remap_SWJ_JTAGDisable:/*< JTAG-DP Disabled and SW-DP Enabled */ ?即能用PB3,PB4,PA15做普通IO,PA13&14用于SWD調(diào)試。

2.GPIO_Remap_SWJ_Disable:/*< Full SWJ Disabled (JTAG-DP + SW-DP) */ ?5個(gè)引腳全為普通引腳,但不能再用JTAG&SWD仿真器調(diào)試,只能用ST-Link調(diào)試。

3.GPIO_Remap_SWJ_NoJTRST:/*< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */PB4可為普通IO口,JTAG&SWD正常使用,但JTAG沒有復(fù)位。

如果你用到所有的五個(gè)引腳當(dāng)做普通IO口,那么上述步驟二中的重映射配置應(yīng)寫為:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

如果你用PB3,PB4,PA15做普通IO,PA13&14用于SWD調(diào)試,則重映射配置應(yīng)寫為:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);



舉例:PA15管腳默認(rèn)為JTAG接口的JTDI,做普通IO口使用時(shí)需Remap,否則將出現(xiàn)一直輸出高電平的情況。

void BUZ_Init(void)
{ 
  GPIO_InitTypeDef GPIO_InitStruct;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);


  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//關(guān)鍵,禁用JTAG 只使用SWD
  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_15;         
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  //復(fù)用時(shí)鐘使能,開啟AFIO時(shí)鐘

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);//引腳影射,禁止JTRST功能
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStruct);
}



PB3這個(gè)調(diào)試引腳,比較特殊一點(diǎn),需要設(shè)置 DBGMCU_CR寄存器,這個(gè)寄存器位說明如下:

09f3c0d8-81df-11ed-8abf-dac502259ad0.png

0a1fa662-81df-11ed-8abf-dac502259ad0.png

要做的就是配置TRACE_IOEN=0,不分配跟蹤引腳。異步跟蹤功能只能在SW-DP調(diào)試接口上實(shí)現(xiàn),當(dāng)我們?cè)谲浖线x擇使用SW-DP調(diào)試時(shí),便會(huì)把一開始默認(rèn)的JTAG-DP切換到SW-DP,而對(duì)應(yīng)的,也會(huì)開啟異步跟蹤功能,使得我們可以在IDE上可以進(jìn)入DEBUG模式調(diào)試。

釋放PA15、PB3、PB4總的代碼就是:

//不分配跟蹤引腳,釋放PB3
DBGMCU->CR=DBGMCU->CR&~((uint32_t)1<<5);??
//使能復(fù)用時(shí)鐘和引腳 GPIO時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA?|?RCC_APB2Periph_GPIOB?|?RCC_APB2Periph_AFIO,?ENABLE);??
//切換 SWJ調(diào)試,釋放 PA15,PB4, PB3
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);??

值得注意的是,當(dāng)釋放禁用了PB3的異步跟蹤后,就無法正常進(jìn)行DEBUG調(diào)試了。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    50465
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52087
  • STM32F10xxx
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    8274
  • 固件庫
    +關(guān)注

    關(guān)注

    2

    文章

    97

    瀏覽量

    14940

原文標(biāo)題:使用STM32F10xxx SWJ引腳作為標(biāo)準(zhǔn)IO

文章出處:【微信號(hào):雨飛工作室,微信公眾號(hào):雨飛工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫介紹

    STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫是什么?怎樣去使用STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫?
    發(fā)表于 09-30 07:45

    如何去使用STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫呢

    什么是STM32標(biāo)準(zhǔn)外設(shè)庫呢?如何去使用STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫呢?
    發(fā)表于 11-02 09:14

    STM32F10xxx GPIO應(yīng)用示例

    STM32F10xxx GPIO應(yīng)用示例:這節(jié)介紹如何使用GPIO固件庫來釋放SWJ-DP引腳,并且重用為標(biāo)準(zhǔn)IO
    發(fā)表于 11-13 14:41 ?20次下載

    STM32F10xxx驅(qū)動(dòng)LCD屏的固件

    STM32F10xxx驅(qū)動(dòng)LCD屏的固件(程序包)。
    發(fā)表于 05-20 16:08 ?13次下載

    STM32F10xxx數(shù)據(jù)手冊(cè)

    STM32F10xxx數(shù)據(jù)手冊(cè)
    發(fā)表于 10-16 13:49 ?87次下載
    <b class='flag-5'>STM32F10xxx</b>數(shù)據(jù)手冊(cè)

    STM32F10xxx使用教程之GPIO應(yīng)用示例資料免費(fèi)下載

    何使用GPIO固件庫來釋放SW.I-DP引腳(串行JTAG調(diào)試端口),并且重用為標(biāo)準(zhǔn)IO 把LED燈與SWJ-DP引腳相連 這篇應(yīng)用筆記是為
    發(fā)表于 08-29 14:27 ?21次下載
    <b class='flag-5'>STM32F10xxx</b>使用教程之GPIO應(yīng)用示例資料免費(fèi)下載

    STM32F10xxx參考手冊(cè)

    STM32F10xxx參考手冊(cè)
    發(fā)表于 09-30 16:33 ?16次下載

    STM32F10xxx中文參考手冊(cè).pdf

    STM32F10xxx中文參考手冊(cè).pdf
    發(fā)表于 02-17 14:07 ?125次下載

    STM32F10xxx中文參考手冊(cè)

    STM32F10xxx中文參考手冊(cè)免費(fèi)下載。
    發(fā)表于 02-21 15:07 ?40次下載

    STM32F10XXX使用DMA傳輸ADC轉(zhuǎn)換的數(shù)據(jù)

    STM32F10XXX使用DMA傳輸ADC轉(zhuǎn)換的數(shù)據(jù)教程說明。
    發(fā)表于 04-24 10:12 ?9次下載

    AN2953_如何從STM32F10xxx固件庫V2.0.3遷移到STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0

    AN2953_如何從STM32F10xxx固件庫V2.0.3遷移到STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0
    發(fā)表于 11-21 08:11 ?0次下載
    AN2953_如何從<b class='flag-5'>STM32F10xxx</b>固件庫V2.0.3遷移到<b class='flag-5'>STM32F10xxx</b><b class='flag-5'>標(biāo)準(zhǔn)</b>外設(shè)庫V3.0.0

    STM32F10xxx參考手冊(cè)(中文)

    STM32F10xxx中文版的參考手冊(cè)
    發(fā)表于 06-19 17:10 ?20次下載

    如何從STM32F10xxx固件庫V2.0.3升級(jí)為STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0

    電子發(fā)燒友網(wǎng)站提供《如何從STM32F10xxx固件庫V2.0.3升級(jí)為STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 09:32 ?2次下載
    如何從<b class='flag-5'>STM32F10xxx</b>固件庫V2.0.3升級(jí)為<b class='flag-5'>STM32F10xxx</b><b class='flag-5'>標(biāo)準(zhǔn)</b>外設(shè)庫V3.0.0

    STM32F10xxx硬件開發(fā)入門

    電子發(fā)燒友網(wǎng)站提供《STM32F10xxx硬件開發(fā)入門.pdf》資料免費(fèi)下載
    發(fā)表于 10-07 14:45 ?2次下載
    <b class='flag-5'>STM32F10xxx</b>硬件開發(fā)入門

    STM32F10xxx參考手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《STM32F10xxx參考手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-11 15:12 ?24次下載