完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的是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公司是怎么得来的? |
|
相关推荐
17个回答
|
|
RCC_CR,使这个寄存器。
|
|
|
|
先不使能时钟功能再进行配置。。。。
|
|
|
|
多谢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; } } |
|
|
|
查看了下资料, 通过时钟控制寄存器RCC_CR 的HISON 位打开或者禁用。
|
|
|
|
不加晶振上电默认就是用的HSI,去掉晶振电路,你先不加时钟初始化程序,直接配置引脚,看下效果
|
|
|
|
多谢各位热心的回复,已解决了,原因是----RCC->CR同时出现了HSEON和HSION位等于1.我从来没给HSEON置1,它是怎么变为1的?参靠手册说复位后变为0,但实际上...
|
|
|
|
多谢各位热心的回复,已解决了,原因是----RCC->CR同时出现了HSEON和HSION位等于1.我从来没给HSEON置1,它是怎么变为1的?参靠手册说复位后变为0,但实际上...
|
|
|
|
感觉怪怪的
|
|
|
|
请问楼主问题是怎么解决的?我现在也遇到了差不多的问题,在SetSysClock()中关闭了HSE,但系统其它问题就总是出现问题,望指点,万分感谢。
|
|
|
|
testd012 发表于 2019-4-30 20:51 我现在也是这个需求,HSE 已经关闭 RCC->CR = 0x03005A83 但是只有PF1能正常控制输出,PF0一直初一低电平状态;而且我用你上面的代码测试也一样;时间久远,不知道楼主能否帮忙解惑 |
|
|
|
直接用HSI,外接晶振不要用。库函数实现的话需要改SystemInit()内的寄存器,按手册改;
怕麻烦的话用STM32cubeMX, 勾选时钟为HSI,再选一下PLL,直接生成代码,很方便的。 对应晶振的引脚就可以按常规的IO设置了。 |
|
|
|
查看了下资料, 通过时钟控制寄存器RCC_CR 的HISON 位打开或者禁用
|
|
|
|
sdfsgsd 发表于 2019-4-30 21:11 你好,虽然时间比较久,但是 我也遇到了同样的问题。PF0无法控制、PF1可控制,不知道你后来解决了没 |
|
|
|
|
|
厉害 , 就是看不太懂 |
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1409 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1342 浏览 3 评论
2828 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1488 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1921 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 16:56 , Processed in 0.759598 second(s), Total 76, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号