STM32F103 的 JTAG, 默认状态是Full SWJ。 The default state after reset is “000” (whole pins assigned for a full JTAG-DP connection).
PB3作为JDO,被JTAG占用。 在 TRACE Asynchronous mode,PB3还是TRACESWO。
若系统不需要JTAG,将PB3当作GPIO,需要如下设置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
第一句中的 RCC_APB2Periph_AFIO 设置 AFIOEN(如果没有这一句,后面两句失效)。 如果一个模块的clock DISABLE,那么,寄存器的值也无法读写。
有了上面两句,就可以进一步对PB3进行操作了。 例如 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIOB->ODR = 0x08;
|