PC13,PC14和PC15引脚通过电源开关进行供电,而这个电源开关只能够吸收有限的电流(3mA)。因
此这三个引脚作为输出引脚时有以下限制:在同一时间只有一个引脚能作为输出,作为输出脚时只能工
作在2MHz模式下,最大驱动负载为30pF,并且不能作为电流源(如驱动LED)。
手册中关于这3个脚的说明,只说了关于做为输出脚的注意事项,我现在是用做输入脚,无论设置成上拉,下拉,或是浮空,读出的引脚状态总是0,引脚电压是2.0V左右。请问:PC13能用做通用的输入脚吗?谢谢!
PC13,PC14和PC15引脚通过电源开关进行供电,而这个电源开关只能够吸收有限的电流(3mA)。因
此这三个引脚作为输出引脚时有以下限制:在同一时间只有一个引脚能作为输出,作为输出脚时只能工
作在2MHz模式下,最大驱动负载为30pF,并且不能作为电流源(如驱动LED)。
手册中关于这3个脚的说明,只说了关于做为输出脚的注意事项,我现在是用做输入脚,无论设置成上拉,下拉,或是浮空,读出的引脚状态总是0,引脚电压是2.0V左右。请问:PC13能用做通用的输入脚吗?谢谢!
/*
*@Note
串口打印调试例程:
USART1_Tx(PA9)。
本例程演示使用 USART1(PA9) 作打印调试口输出。
*/
#include "debug.h"
/* Global typedef */
/* Global define */
/* Global Variable */
void GPIO_Toggle_INIT( void )
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
PWR_BackupAccessCmd( ENABLE );/* 允许修改RTC和后备寄存器*/
RCC_LSEConfig( RCC_LSE_OFF ); /* 关闭外部低速时钟,PC14+PC15可以用作普通IO*/
BKP_TamperPinCmd(DISABLE); /* 关闭入侵检测功能,PC13可以用作普通IO*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13| GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOC, &GPIO_InitStructure );
PWR_BackupAccessCmd(DISABLE);/* 禁止修改RTC和后备寄存器*/
}
/*********************************************************************
* @fn main
*
* @brief Main program.
*
* @return none
*/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
GPIO_Toggle_INIT();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n", SystemCoreClock);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==1)
{
printf("This is printf example\r\n");
}
}
}
您好!用了上面的程序,效果依旧。请问:您在板子上测试过吗?或是我的板子有毛病?
您好,不好意思,我之前发你的例程是用作输出的,现在附件例程是作为输入配置的,可以参考一下,测试时没问题的。但是你按照另外一个回复参考工程配置也是没有问题的,你可以针对你的MCU具体型号检查一下ld文件、启动文件的配置是否正确,如下图。