你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HSE 引脚用作GPIO碰到问题

[复制链接]
huangjiayin 提问时间:2014-12-17 10:05 /
我使用的是STM32F030,采用内部时钟(HSI),现想把PF0(OSC-IN)和PF1(OSC-OUT)作为普通IO,把这2个脚设为推挽方式后,没反应
            RCC->AHBENR|=1<<22;                //使能PortF时钟
           GPIOF->MODER   = 0X55555555 ;  //所有的IO设为推挽方式
           GPIOF->OTYPER  = 0X00000000;  
           GPIOF->OSPEEDR = 0X00000000;  
           GPIOF->PUPDR   = 0X00000000;
我看到参考手册如下内容:
"HSE 或LSE 引脚用作GPIO,当HSE或LSE振荡器关断时 ( 复位后的缺省状态) ,相关振荡器引脚可以用做普通的GPIO口。当HSE 或LSE 振荡器开启 ( 在RCC_CSR 寄存器设置HSEON 或LSEON 位来开启) 振荡器控制其相关引脚且相关引脚的GPIO 配置无效。......."
RCC_CSR 寄存器没有HSEON /LSEON 位,不知ST公司是怎么得来的?
收藏 1 评论19 发布时间:2014-12-17 10:05

举报

19个回答
回答时间:2014-12-17 11:27:28
RCC_CR,使这个寄存器。
巅峰残狼 回答时间:2014-12-17 12:16:18
先不使能时钟功能再进行配置。。。。
huangjiayin 回答时间:2014-12-17 14:14:35
多谢2位的回复,巅峰残狼---我试过你的方法,还是不行.
安----应该是ST写错了,应该是RCC_CR,不是RCC_CSR.现我的程序是采用内部晶振HSI,已关闭了外不晶振HSE,那么OSC-IN(PF0)和OSC-OUT(PF1)这2个脚应该可以做为普通IO,但实际上还是不行啊.下面贴出时钟初始化部分:
void Stm32_Clock_Init(void)
{   
           //--------以下是内部HSI---------------
           uint8_t temp=0;
           RCC->AHBENR|=1<<22;                //使能PortF时钟
           RCC->APB1RSTR = 0x00000000;        //复位结束
           RCC->APB2RSTR = 0x00000000;
           RCC->APB2ENR = 0x00000000;         //外设时钟关闭.                  
           RCC->APB1ENR = 0x00000000;
        
           RCC->CR |= 1<<18;                  //禁用外部HSE
           RCC->CR |= 0x00000001;             //使能内部高速时钟HSION         
           while((RCC->CR&(1<<1))!=(1<<1));   //等待HSIRDY位变为1
           RCC->CFGR|=1<<16;                       //PLLSRC ON (此位一定要在关闭PLL后才能设置)
           RCC->CFGR=0X00000000;              //APB1=DIV1;APB2=DIV1;AHB=DIV1
           RCC->CFGR|=1<<21;                  //12倍频
           RCC->CFGR|=1<<19;         
           RCC->CR|=1<<24;                    //PLLON
           while((RCC->CR&(1<<25))!=(1<<25)); //等待PLL锁定
           RCC->CFGR|=0x00000002;             //PLL作为系统时钟         
           while(temp!=0x02)                  //等待PLL作为系统时钟设置成功
           {   
                      temp=RCC->CFGR>>2;
                      temp&=0x03;
           }
}
wambob 回答时间:2014-12-18 14:38:56
查看了下资料,  通过时钟控制寄存器RCC_CR 的HISON 位打开或者禁用。
奔跑小蜗牛 回答时间:2014-12-18 14:44:35
不加晶振上电默认就是用的HSI,去掉晶振电路,你先不加时钟初始化程序,直接配置引脚,看下效果
huangjiayin 回答时间:2014-12-18 16:14:18
多谢各位热心的回复,已解决了,原因是----RCC->CR同时出现了HSEON和HSION位等于1.我从来没给HSEON置1,它是怎么变为1的?参靠手册说复位后变为0,但实际上...
huangjiayin 回答时间:2014-12-18 16:15:50
多谢各位热心的回复,已解决了,原因是----RCC->CR同时出现了HSEON和HSION位等于1.我从来没给HSEON置1,它是怎么变为1的?参靠手册说复位后变为0,但实际上...
万里-363223 回答时间:2014-12-19 08:39:49
感觉怪怪的
Mrbls 回答时间:2015-6-14 16:34:06
请问楼主问题是怎么解决的?我现在也遇到了差不多的问题,在SetSysClock()中关闭了HSE,但系统其它问题就总是出现问题,望指点,万分感谢。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版