完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
void STM32_Clock_Init(uint8_t PLL)
{ uint8_t temp=0; MYRCC_DeInit(); 复位并配置向量表 RCC->CR|=0x00010000; 选用外部晶振 while(!(RCC->CR &=0X00020000)); 等待外部时钟就绪 RCC->CFGR=0X00000400; PLL-=2; RCC->CFGR|=PLL<<18; 倍频到48MHZ RCC->CFGR|=1<<16; PLLSRC ON FLASH->ACR|=0x32; RCC->CR|=0x01000000; PLLON(Bit24) while(!(RCC->CR &=0X02000000)); 等待 PLLPLLPLL锁 RCC->CFGR|=0x00000002; PLL作为系统时钟 while(temp!=0x02) 等待 PLLPLLPLL作为系统时钟设置成功 { temp=RCC->CFGR>>2; temp&=0x03; } RCC->APB2ENR|=1<<0; 使能SYSCFG时钟 } |
|
相关推荐
26个回答
|
|
|
|
|
|
|
|
|
会不会是因为和板子的原因啊,你换块板子测试一下呢
|
|
|
|
|
|
死在哪里,把问题描述清楚,不然别人怎么回答你的问题。
|
|
|
|
|
|
多谢3位的回答,我是操作寄存器的。现逻辑分析仪测出OSC-IN和OSC-OUT没波形,电压为零
|
|
|
|
|
|
烧写程序成功,用J-LINK仿真器设置断点,连第1条指令不执行,这进一步说明晶振没起振了
|
|
|
|
|
|
我初学STM32,看700多页参考手册头都大了.
|
|
|
|
|
|
我怀疑是你的阻抗不匹配,或者电容不合适,
|
|
|
|
|
|
xulay:这句是while(!(RCC->CR &=0X00020000)); 是对的,判断HSE 振荡器就绪.我改成原子的while(!(RCC->CR>>17));结过还是一样
|
|
|
|
|
|
晶振没波形是硬件问题 你去检查晶振电路 电容什么的
|
|
|
|
|
|
外部晶振是8MHZ,那2个起振电容是22PF
|
|
|
|
|
|
换了另一块板,测试结过还是一样,是不是哪里设置出了问题?
|
|
|
|
|
|
为何非要用寄存器,改库函数试试,不行就换晶振,以前焊电路板时就把晶振烫坏过一次
|
|
|
|
|
|
仔细阅读一下时钟部份的资料,看看有没有什么关键配置没有打开,同时更换晶振和起振电容(一般除了容值相差很大的情况才会不起振),检测电路连接 |
|
|
|
|
|
这种情况有可能是工程(软件部份,IDE处理时的问题)复制代码重新建立一个工程试,我遇到过这种情况,但比较少一般,我在使用5.12版本做STM32F103时遇到过仿真不动的情况 |
|
|
|
|
|
我觉得还是使用示波器看吧。逻辑分析仪未必能够看到峰峰值较小的正弦波。 |
|
|
|
|
|
多谢各位的回答,我查了原子网上的资料,说是那2个匹配电容太大,去掉试一下,结果是晶振2脚还是高电平(逻辑分析仪测出),但数字万用表是显示0.也重建了工程,结过还是一样.我是抄原子的,只是配置向量表那几条语句屏蔽了,不会因为这里吧?---因为刚接触STM32,不熟它。打开配置向量表那几条语句会报警的,配置向量表那几条语句内容如下:
#ifdef VECT_TAB_RAM MY_NVIC_SetVectorTable(0x20000000, 0x0); #else MY_NVIC_SetVectorTable(0x08000000,0x0); #endif* |
|
|
|
|
|
|
|
|
|
|
|
现重贴MYRCC_DeInit函数,我把配置向量表屏蔽了,见下
void MYRCC_DeInit(void) { RCC->APB1RSTR = 0x00000000;//复位结束 RCC->APB2RSTR = 0x00000000; RCC->AHBENR = 0x00000014; //睡眠模式闪存和SRAM时钟使能.其他关闭. RCC->APB2ENR = 0x00000000; //外设时钟关闭. RCC->APB1ENR = 0x00000000; RCC->CR |= 0x00000001; //使能内部高速时钟HSION RCC->CFGR &= 0xF8FF0000; //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0] RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLON RCC->CR &= 0xFFFBFFFF; //复位HSEBYP RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE RCC->CIR = 0x00000000; //关闭所有中断 //配置向量表 /* #ifdef VECT_TAB_RAM MY_NVIC_SetVectorTable(0x20000000, 0x0); #else MY_NVIC_SetVectorTable(0x08000000,0x0); #endif*/ } |
|
|
|
|
|
duanks,我对库函数很陌生,现也没有现成的STM32F030K6函函数例子来测试
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:32 , Processed in 1.036657 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
429