用STM8L的两个GPIO口 PC0 PD7控制一个射频开关 TX RX,GPIO没有用外部上拉电阻,想通过内部上拉电阻控制射频开关两个输入口的高和低,结果发现PD7是可以的,PC0在输出高的时候只有300多mV,导致电路工作异常,两个口驱动能力是一样的,难道PC0口没有上拉电阻??为了防止其他GPIOC口消耗过多电流导致PC0驱动能力不够,特地将其他口都设成HIGHZ
程序如下:
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
// 程序刚启动
{
GPIO_DeInit(GPIOC);
GPIO_Init(GPIOC, GPIO_Pin_0, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_4, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_5, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_6, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_7, GPIO_Mode_Out_OD_HiZ_Fast);
GPIO_Init(GPIOC, GPIO_Pin_0, GPIO_Mode_Out_PP_High_Fast);
GPIO_Init(GPIOD, GPIO_Pin_7, GPIO_Mode_Out_PP_High_Fast);
while(1){
GPIO_WriteBit(GPIOC,GPIO_Pin_0,SET)// 这里就不正常,300mV
GPIO_WriteBit(GPIOC,GPIO_Pin_0,RESET)
GPIO_WriteBit(GPIOD,GPIO_Pin_7,SET)// 这里是正常的, 3.3V
GPIO_WriteBit(GPIOD,GPIO_Pin_7,RESET)
}
』 |