找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9052|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

學(xué)習(xí)筆記-STM32 JLINK調(diào)試、端口復(fù)用與端口重映射

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-29 15:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
      
22集 JLINK在線調(diào)試方法與技巧
     Cortex-M3內(nèi)核含硬件調(diào)試模塊,支持復(fù)雜的調(diào)試操作。硬件調(diào)試模塊允許內(nèi)核在取指(指令斷點(diǎn))或訪問數(shù)據(jù)(數(shù)據(jù)斷點(diǎn))時(shí)暫停。內(nèi)核暫停時(shí),內(nèi)核內(nèi)部狀態(tài)和系統(tǒng)的外部狀態(tài)都是可以查詢的。完成查詢后,內(nèi)核和外設(shè)可以被復(fù)原,程序?qū)⒗^續(xù)執(zhí)行。
支持兩種調(diào)試接口:SW串行接口(2線) JTAG調(diào)試接口(5線)
     需要注意的是,由于上電默認(rèn)為JTMS/SWDIO模式,所以PA13\PA14\PA15\PB3\PB4都不能直接當(dāng)成GPIO使用?梢酝ㄟ^ GPIO_PinRemapConfig() 來關(guān)閉或開啟JTAG-DP\SW-DP,從而可以使用這些GPIO。
這集不方便用文字描述,都注重實(shí)踐性。
23集 端口復(fù)用和端口重映射
一、端口復(fù)用
    STM32有很多的內(nèi)置外設(shè),這些外設(shè)的引腳都是GPIO復(fù)用的。也就是說,一個(gè)GPIO如果可以復(fù)用為內(nèi)置外設(shè)的功能引腳,那么當(dāng)這個(gè)GPIO作為內(nèi)置外設(shè)使用的時(shí)候,就叫做端口復(fù)用。
    例如串口1的發(fā)送接受引腳是PA9\PA10,當(dāng)我們需要用串口1時(shí),就需要設(shè)置PA9\PA10復(fù)用為串口1功能的發(fā)送接收引腳。這就是端口復(fù)用。
二、端口復(fù)用的配置方法(PA9\PA10配置為串口1為例子)
1、使能GPIO端口時(shí)鐘、使能串口時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
2、配置端口的模式
每一種外設(shè)對(duì)端口的模式都不太一樣,需要參考《STM32中文參考手冊(cè) V10》P110的表格
//PA9  復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;         
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PA10  浮空輸入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);  
三、端口重映射
每個(gè)內(nèi)置外設(shè)都有根據(jù)外設(shè)的需要,都會(huì)有相應(yīng)數(shù)量的輸入輸出引腳,例如I2C就需要兩個(gè)引腳,一般這些引腳的輸出端口都是固定不變的,但為了讓設(shè)計(jì)工程師可以更好的安排引腳的走向和功能,在STM32中引入了外設(shè)引腳重映射的概念,即一個(gè)引腳除了可以復(fù)用默認(rèn)的外設(shè)功能外,還可以通過設(shè)置重映射寄存器的方式把其他外設(shè)功能映射到該端口上,當(dāng)然原來的引腳上的外設(shè)功能就失效了。
例如PD5\PD6的復(fù)用功能為FSMC_NWE\FSMC_NWAIT,它也可以通過設(shè)置重映射寄存器的方式設(shè)置外設(shè)功能為USART2_TX\USART2_RX。而原來的PA2\PA3則不能再作為USART2_TX\USART2_RX使用了。
  
四、端口重映射的優(yōu)點(diǎn)
1、I/0的復(fù)用:GPIO和內(nèi)置外設(shè)共用引出管腳
2、I/0的重映射:復(fù)用功能(AFIO)從不同的GPIO管腳引出
3、為了方便PCB的設(shè)計(jì),潛在的減少信號(hào)的交叉干擾
4、分時(shí)復(fù)用某些外設(shè),虛擬地增加了端口數(shù)目
五、AFIO重映射的操作步驟
1、使能被重映射到的I/O端口時(shí)鐘
2、使能被重映射的外設(shè)時(shí)鐘
3、使能AFIO功能的時(shí)鐘(重要)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
4、開啟重映射(根據(jù)第一個(gè)參數(shù)來確定是部分重映射還是全部重映射)
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
六、AFIO輔助功能時(shí)鐘必須開啟的場景(參考《STM32中文參考手冊(cè)》P123)
凡是對(duì)寄存器AFIO_MAPR、AFIO_EXTICRX、AFIO_EVCR進(jìn)行讀寫操作前都應(yīng)該首先打開AFIO時(shí)鐘。
AFIO_MAPR:配置復(fù)用功能重映射
AFIO_EXTICRX:配置外部中斷線映射
AFIO_EVCR:配置EVENTOUT事件輸出
七、部分重映射 & 完全重映射
部分重映射:外設(shè)功能的部分引腳重新映射,還有一部分引腳是原來的默認(rèn)引腳。
完全重映射:外設(shè)功能的所有引腳都重新映射。
例如:
    USART3_TX\USART3_RX\USART3_CK這三個(gè)功能由PB10\PB11\PB12重映射到PC10\PC11\PC12,其余的USAER3_CTS\USART3_RTS依然保留在PB13\PB14,則稱為部分重映射。
將USART3_TX\USART3_RX\USART3_CK\USAER3_CTS\USART3_RTS由PB10\PB11\PB12\PB13\PB14全部映射到PD8\PD9\PD10\PD11\PD12,則稱為完全重映射

   




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表