| 问题描述: 在STM8L101F3P6的PD0这个口,其控制一个NMOS来控制某设备的供电情况,电路如图下: 1、初始化函数中设置PD0为推挽输出高电平: GPIO_Init(GPIOD,POWER_UP,GPIO_Mode_Out_PP_High_Fast);   但此后,在GPIO_SetBits(GPIOD,GPIO_Pin_0);的时候,会出现如下错误: 
 2、 设置为推挽输出低电平 GPIO_Init(GPIOD,POWER_UP,GPIO_Mode_Out_PP_Low_Fast); 时,问题依旧。 
 3、初始化GPIO时,不初始化该函数,不出现上述问题,但调试遇到GPIO_SetBits(GPIOD,GPIO_Pin_0)时也会出现上述的情况。很奇怪。 
 4、同样的电路在PA口无问题,PA2、PA3接上述电路可正常控制及正常调试。 
 5、更换PB0和PB6控制上述电路,问题依旧,并且调试几次后,ST-LINK无**常连接单片机,芯片损坏。 
 目前这个问题无法解决,只能用替代方案不使用相应的IO口来解决。接下来看一下用户手册。 -------------------------------------------------------------------------------------------------------------------------- 1、IO口原理结构图如下,上述问题估计和内部寄存器状态和IO输出级的MOS有关,但无法确认。 
 2.复位后的IO状态有如下描述: 
 
 这算是什么说词,告诉我a few pins,哪些pins啊?什么different行为啊?相关手册的pinout详细描述在哪里?狂晕。。。。  -------------------------------------------------------------------------------------------------------------- 测试程序如下: [cpp] view plain copy
 
 
 #include "stm8l10x.h"    void GPIO_Init_my(void);  static void BoardInit(void);  static void CLK_Init(void);    uint8_t Status=0;    void main(void)  {       BoardInit();          enableInterrupts();         while (1)      {             switch(Status)          {              case 0://待机                      GPIO_ResetBits(GPIOD,GPIO_Pin_0);                      Status=1;                  break;              case 1:                      GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_High_Fast);                      Status=0;                  break;              default:                  break;          }      }     }       void BoardInit(void)  {      CLK_Init();      GPIO_Init_my();  }    void CLK_Init(void)  {      CLK_DeInit();      CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);  }    void GPIO_Init_my(void)  {      GPIO_Init(GPIOA,GPIO_Pin_2,GPIO_Mode_Out_PP_High_Fast);      GPIO_Init(GPIOA,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Fast);            GPIO_Init(GPIOB,GPIO_Pin_All,GPIO_Mode_Out_PP_High_Fast);            GPIO_Init(GPIOC,GPIO_Pin_All,GPIO_Mode_Out_PP_High_Fast);            GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_Low_Fast);    }  
 
 
 |