打印
[STM32F0]

STM32F051c8t6, 晶振管脚 OSC_IN和OSC_OUT 配置为 普通IO电压过低!!

[复制链接]
4654|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
960944837|  楼主 | 2016-4-28 15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    芯片有两个 时钟引脚 , OSC_IN和OSC_OUT与OSC32_IN和OSC32_OUT,我把这4个引脚 接按键,接地。
其中OSC32_IN和OSC32_OUT用,下配置,正确读取按下的时候为低,没按下内部正常上拉到3.3V。
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_2;
        GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOC, &GPIO_InitStruct);
  但是OSC_IN和OSC_OUT这两个引脚,同样配置,出来测得电压只有1.8V,没有正常上拉,改为输出模式也没有上拉到3.3,按键有无按下都是 低电平,没想到在按键配置这里碰到坎,求助了!
    提一下,我外部硬件添加一个复位电路来给OSC_IN和OSC_OUT这两个引脚送电平,外部引脚测试对了,读取到的引脚值却不是 测到的  0v-3.3V,还是烦人的 1.8.
沙发
seawwh| | 2016-5-1 16:55 | 只看该作者

关键是下面的语句
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  

使用特权

评论回复
板凳
cnb12345| | 2016-5-2 12:11 | 只看该作者

使用特权

评论回复
地板
tangmin79| | 2016-5-23 14:33 | 只看该作者
取消RCC CR寄存器中HSEON标志。
RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
此时管脚直接当GPIO口操作即可。

使用特权

评论回复
5
mdwct| | 2016-6-1 22:01 | 只看该作者
tangmin79 发表于 2016-5-23 14:33
取消RCC CR寄存器中HSEON标志。
RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
此时管脚直接当GPIO口操作即可。 ...

实际测试过么?取消HSEON后,配置PF0为输入引脚,不停读取PF0状态发现会出现0,1跳动。外部实际是接了上拉电阻,通过示波器观察的话,PF0恒定为高电平。

使用特权

评论回复
6
960944837|  楼主 | 2016-6-24 09:49 | 只看该作者
引脚复用为普通IO后,禁用外部时钟HSE,用的是库在void SystemInit (void)中仔细寻找哪里开启了时钟,我就是关闭后又开了,SetSysClock();函数又开了时钟导致没解决,现在已解决。

使用特权

评论回复
7
960944837|  楼主 | 2016-6-24 09:57 | 只看该作者
tangmin79 发表于 2016-5-23 14:33
取消RCC CR寄存器中HSEON标志。
RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
此时管脚直接当GPIO口操作即可。 ...

引脚复用为普通IO后,禁用外部时钟HSE,用的是库在void SystemInit (void)中仔细寻找哪里开启了时钟,我就是关闭后又开了,SetSysClock();函数又开了时钟导致没解决,现在已解决。

使用特权

评论回复
8
sky.sun.zz| | 2016-6-24 11:52 | 只看该作者
OSC32_IN没有上拉,不应该设成 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

18

帖子

0

粉丝