22集 JLINK在線調試方法與技巧 Cortex-M3內核含硬件調試模塊,支持復雜的調試操作。硬件調試模塊允許內核在取指(指令斷點)或訪問數據(數據斷點)時暫停。內核暫停時,內核內部狀態和系統的外部狀態都是可以查詢的。完成查詢后,內核和外設可以被復原,程序將繼續執行。 支持兩種調試接口:SW串行接口(2線) JTAG調試接口(5線) 需要注意的是,由于上電默認為JTMS/SWDIO模式,所以PA13\PA14\PA15\PB3\PB4都不能直接當成GPIO使用?梢酝ㄟ^ GPIO_PinRemapConfig() 來關閉或開啟JTAG-DP\SW-DP,從而可以使用這些GPIO。 這集不方便用文字描述,都注重實踐性。
23集 端口復用和端口重映射 一、端口復用 STM32有很多的內置外設,這些外設的引腳都是GPIO復用的。也就是說,一個GPIO如果可以復用為內置外設的功能引腳,那么當這個GPIO作為內置外設使用的時候,就叫做端口復用。 例如串口1的發送接受引腳是PA9\PA10,當我們需要用串口1時,就需要設置PA9\PA10復用為串口1功能的發送接收引腳。這就是端口復用。 二、端口復用的配置方法(PA9\PA10配置為串口1為例子) 1、使能GPIO端口時鐘、使能串口時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 2、配置端口的模式 每一種外設對端口的模式都不太一樣,需要參考《STM32中文參考手冊 V10》P110的表格 //PA9 復用推挽輸出 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); 三、端口重映射 每個內置外設都有根據外設的需要,都會有相應數量的輸入輸出引腳,例如I2C就需要兩個引腳,一般這些引腳的輸出端口都是固定不變的,但為了讓設計工程師可以更好的安排引腳的走向和功能,在STM32中引入了外設引腳重映射的概念,即一個引腳除了可以復用默認的外設功能外,還可以通過設置重映射寄存器的方式把其他外設功能映射到該端口上,當然原來的引腳上的外設功能就失效了。 例如PD5\PD6的復用功能為FSMC_NWE\FSMC_NWAIT,它也可以通過設置重映射寄存器的方式設置外設功能為USART2_TX\USART2_RX。而原來的PA2\PA3則不能再作為USART2_TX\USART2_RX使用了。
四、端口重映射的優點 1、I/0的復用:GPIO和內置外設共用引出管腳 2、I/0的重映射:復用功能(AFIO)從不同的GPIO管腳引出 3、為了方便PCB的設計,潛在的減少信號的交叉干擾 4、分時復用某些外設,虛擬地增加了端口數目 五、AFIO重映射的操作步驟 1、使能被重映射到的I/O端口時鐘 2、使能被重映射的外設時鐘 3、使能AFIO功能的時鐘(重要) RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 4、開啟重映射(根據第一個參數來確定是部分重映射還是全部重映射) GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); 六、AFIO輔助功能時鐘必須開啟的場景(參考《STM32中文參考手冊》P123) 凡是對寄存器AFIO_MAPR、AFIO_EXTICRX、AFIO_EVCR進行讀寫操作前都應該首先打開AFIO時鐘。 AFIO_MAPR:配置復用功能重映射 AFIO_EXTICRX:配置外部中斷線映射 AFIO_EVCR:配置EVENTOUT事件輸出 七、部分重映射 & 完全重映射 部分重映射:外設功能的部分引腳重新映射,還有一部分引腳是原來的默認引腳。 完全重映射:外設功能的所有引腳都重新映射。 例如:
USART3_TX\USART3_RX\USART3_CK這三個功能由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,則稱為完全重映射
|