程序开始就关闭了JTAG,然后把PA15脚做输出的时候正常,做输入的时候读出的值不对,不知道什么原因?这个口只能用做输出吗?
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭JTAG口,使PB3,PB4,PA15这几个IO作为普通IO使用
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIOStru.GPIO_Mode = GPIO_Mode_Out_PP; //定义PA15为推挽输出。
GPIOStru.GPIO_Speed = GPIO_Speed_50MHz;
GPIOStru.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOA,&GPIOStru);
GPIO_SetBits(GPIOA,GPIO_Pin_15); //这里PA15控制一个LED,关闭LED都正常。
GPIO_ResetBits(GPIOA,GPIO_Pin_15);
GPIOStru.GPIO_Mode = GPIO_Mode_IPD; //定义PA15为下拉输入。
GPIOStru.GPIO_Speed = GPIO_Speed_50MHz;
GPIOStru.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOA,&GPIOStru);
b = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);
不管PA15接高电平还是低电平,读出的结果都是0x01.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
经测试,PA15在设置成下拉输入模式后本身就有2.67V的电压,不能用于做输入检测,做输出没有问题。
一周热门 更多>