STM32F407 PC13-PC15作为GPIO的方法

2019-07-20 14:57发布

第一次用STM32F407,因为没有用到RTC,无意中将PC-13-PC15作为了普通IO口使用了。接下来悲催的事情发生了,PC13-PC15是很特殊的pin,STM32F103,很多人讨论过怎么设置成GPIO,并且成功了。看STM32F407的资料,说只能有一个作为输出,即便如此我也认了,现在是也搞不定,都设置成输入,是高阻,通过上拉电阻可以得到高电平,设置成输出,则都是低电平,把某一路设置成输出,三路的输出就有点乱套。整个PCB的工程非常大,STM32F407在里面只是辅助功能,所以重新修改设计只能是下次了。因为RTC是需要在低功耗情况下运行的,所以IC设计的时候这些端口的驱动电路都会和普通的IO不一样,前车之鉴呀。哪位大神碰到过类似的问题,还望赐教!现在我的代码是这样的,控制不了输出电平情况。
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC  , ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_OFF);
GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-20 18:21
 精彩回答 2  元偷偷看……
bg4tfw
2楼-- · 2019-07-20 20:50
问题解决了,PC13-PC15都可以作为GPIO使用,而且都可以作为输出,手册中说只能有一个作为输出是因为在三个PIN总的输出电流不能超过4mA,如果输出电流很小,则都可以作为输出。VBAT可以不和VDD连接在一起,VDD上电后,内部电路会自动切换到VDD上。代码如下:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC  , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR  , ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_OFF);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIOC->BSRRH = GPIO_Pin_13;
GPIOC->BSRRH = GPIO_Pin_14;
GPIOC->BSRRH = GPIO_Pin_15;

这次碰到的主要问题是STM32库的问题,BSRRH 和BSRRL是反的,修改了库中的定义的顺序,一切解决。不知道是我用的库被人修改过还是,ST公司本来就错了,不知道还有谁碰到过这样的问题?太相信库了,就是这样的结果。

bg4tfw
3楼-- · 2019-07-20 20:59
回复【2楼】正点原子:
---------------------------------
谢谢站长的回复!周一我再试试,另外我的VBAT IN没有和VDD接在一起,是悬空的,不知道是否会影响对这部分的操作?
正点原子
4楼-- · 2019-07-21 01:48
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 05:43
 精彩回答 2  元偷偷看……
hello_galaxy
6楼-- · 2019-07-21 06:04
bg4tfw 发表于 2014-11-8 17:02
问题解决了,PC13-PC15都可以作为GPIO使用,而且都可以作为输出,手册中说只能有一个作为输出是因为在三个P ...

可以作为输入吗?作为输入怎么感觉不好使呢??

一周热门 更多>