第一次仿真调试ST的例子,GPIO的EXAMPLE: 进行了几次都很正常, int main(void) { #ifdef DEBUG debug(); #endif
/* Configure the system clocks */ RCC_Configuration(); /* NVIC Configuration */ NVIC_Configuration();
/* Configure PB.09 as input */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Test if PB.09 level is low (Key push-button on Eval Board pressed) */
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) == 0x00) { /* Key is pressed */
/* Disable the Serial Wire Jtag Debug Port SWJ-DP */ GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
/* Configure PA.13 (JTMS/SWDAT), PA.14 (JTCK/SWCLK) and PA.15 (JTDI) as output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //PA9,PA10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure PB.03 (JTDO) and PB.04 (JTRST) as output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4; GPIO_Init(GPIOB, &GPIO_InitStructure);
while (1) { /* Toggle JTMS/SWDAT pin */ //GPIO_WriteBit(GPIOA, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_13))); GPIO_WriteBit(GPIOA, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_9))); /* Insert delay */ Delay(0x5FFFF);
/* Toggle JTCK/SWCLK pin */ GPIO_WriteBit(GPIOA, GPIO_Pin_14, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_14))); /* Insert delay */ Delay(0x5FFFF);
/* Toggle JTDI pin */ GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_15))); /* Insert delay */ Delay(0x5FFFF);
/* Toggle JTDO pin */ GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_3))); /* Insert delay */ Delay(0x5FFFF);
/* Toggle JTRST pin */ GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_4))); /* Insert delay */ Delay(0x5FFFF); } } else { while (1) { } } }
但把语句:if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) == 0x00) 改成 :if(1)后,出现错误, 然后再也连接不成功了,重新焊接一块也是如此, 请教高手们,为什么? |