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,则称为完全重映射
|