gd32f130的PF0,PF1怎么设为普通io使用

[复制链接]
2345|7
 楼主| linguanghua 发表于 2017-10-18 17:56 | 显示全部楼层 |阅读模式
请问有人知道gd32f130的PF0,PF1怎么设为普通io使用吗?
我看手册PF0,PF1默认是作为GPIO口使用,但是实际使用无法控制IO口电平。
void pwr_ctr_init(void)
{
    GPIO_InitPara  GPIO_InitStructure;
    RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_GPIOF, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_PULLUP;//GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_2MHZ;
    GPIO_Init(GPIOF, &GPIO_InitStructure);
    GPIOF ->BOR = GPIO_PIN_1 ;//置H
}
这份代码不起作用,IO口有2.9V的电压(也可能是外部电路的电路分压)。
 楼主| linguanghua 发表于 2017-10-19 11:02 | 显示全部楼层
加上一句,终于可以了。
RCC->GCCR &= ~((uint32_t)RCC_GCCR_HSEEN);
Houtz 发表于 2017-10-19 11:04 | 显示全部楼层
使用内振的话,PF0,PF1默认是IO的。如果使用外振,那就这个就是晶振脚OSC_IN,OSC_OUT。
 楼主| linguanghua 发表于 2017-10-19 11:28 | 显示全部楼层
我发现固件2.0没这个问题。
system_gd32f1x0.c
在上面文件中,
定义
#define SYSCLK_FREQ_xxMHz_HSI
而固件1.0没有HSI的频率定义。
所以要手动禁止HSE.
建议大家固件一定要用新的。
Houtz 发表于 2017-10-19 11:34 | 显示全部楼层
嗯,你使用8M内振的话,RCC_GCCR_HSEEN应该是关闭的,可能是你选了外部晶振的初始化,导致这个是打开的,而实际上没有挂晶振,程序等待超时切换到了内振。而RCC_GCCR_HSEEN就是打开了。注意你的时钟初始化程序。后续有问题可以找我375880228@qq.com
tongbu2015 发表于 2017-10-23 21:47 | 显示全部楼层
Houtz 发表于 2017-10-19 11:34
嗯,你使用8M内振的话,RCC_GCCR_HSEEN应该是关闭的,可能是你选了外部晶振的初始化,导致这个是打开的,而 ...

这个分析还是蛮不错的,我也参考下
shenmu2012 发表于 2017-10-23 22:38 | 显示全部楼层
这个是怎么控制的?
zhangbo1985 发表于 2017-10-24 18:58 | 显示全部楼层
这个重点的看下IO口的电平设计的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

222

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部