完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "STM32f10x_lib.h"
//采用HSI作为驱动时钟源 void HSI_SYSTEM_CLOCK( void ){ //开启HSI,关闭HSE,CSS RCC->CR = 0x00000000;//RCC_CR 初始化 ,有点多余,初始化就是0x83 RCC->CFGR = 0X00000000;//RCC_CFGR 初始化 RCC->CR |= 0X01;//开启HSION while(RCC->CR&(u32)(1<<2));//相当于RCC_CR的HSIRDY = 1时跳出。(u32)1<<2 = 0...0000 0010; //****PLLSRC配置要在PLLON之前配置****** RCC->CFGR &= 0<<16;//PLLSRC = 0 HSI/2 作为PLL输入时钟源//****刻意的写这个配置成0 主要是位了体现配置过程。 RCC->CR |= 1<<24;//PLLON =1 while(RCC->CR & (u32)(1<<25));//等待PLLRDY = 1; //配置PLL。9倍频,4*9=26Mhz。注意:PLLSRC必须在PLL关闭的情况下才能配置 //由于我们配置的是HSI/2 就是0 初始化就是0 所以这里没有改变,此程序存在风险 //RCC->CFGR |= (u32)(0x07<<18);//PLLMUL = 0111 ;9倍频 RCC->CFGR |= 1<<18;//3倍频 RCC->CFGR |= 1<<1;//SW[1:0] 10 PLL 作为系统时钟 } void HSE_SYSTEM_CLOCK(void){ //开启HSE,关闭HSI,CSS RCC->CR = 0x00000000;//RCC_CR 初始化 RCC->CR |= 1<<16;//开启HSEON while(RCC->CR&(u32)(1<<17));//相当于RCC_CR的HSERDY = 1时跳出。(u32)1<<17 = 0...0000 0010.....; RCC->CFGR &=~(u32)(1<<17); RCC->CFGR |=1<<16;//PLLXTPRE = 0;PLLSRC = 1;HSE 作为PLL输入时钟源 RCC->CR |= 1<<24;//PLLON =1 while(RCC->CR & (u32)(1<<25));//等待PLLRDY = 1; //配置PLL。9倍频,4*9=26Mhz。注意:PLLSRC必须在PLL关闭的情况下才能配置 //由于我们配置的是HSI/2 就是0 初始化就是0 所以这里没有改变,此程序存在风险 RCC->CFGR |= (u32)(0x07<<18);//PLLMUL = 0111 ;9倍频 RCC->CFGR |= 1<<1;//SW[1:0] 10 PLL 作为系统时钟}void LED_INIT(void){ RCC->APB2ENR = 0X00000000; RCC->APB2ENR |= (1<<2)|(1<<5);//开启GPIOA,GPIOD设备时钟 //先配置PA8是输出模式 ,输出时一定要注意端口速率问题 GPIOA->CRH = 0x00000000; GPIOA->CRH = 0x00000002;//输出模式,最大速度2Mhz 推免输出 //配置PD2是输出模式 ,输出时一定要注意端口速率问题 GPIOD->CRL = 0x00000000; GPIOD->CRL = 0x00000200;//输出模式,最大速度2Mhz 推免输出} void delay(u32 time)//不晓得是多长时间啊{int i ,j;for(i=0;i<10000;++i)for(j=0;j |
|
相关推荐
4个回答
|
|
软件仿真一下,看看寄存器是否正确?
|
|
|
|
//这一句少个叹号吧
while(RCC->CR&(u32)(1<<2));//相当于RCC_CR的HSIRDY = 1时跳出。(u32)1<<2 = 0...0000 0010; //这句也少个叹号吧 while(RCC->CR & (u32)(1<<25));//等待PLLRDY = 1; //说的是PLL开启后配置就不能变了,你看你怎么设的 RCC->CR |= 1<<24;//PLLON =1 // !!!!!!!!!!!!!!!!!PLL开启了 while(RCC->CR & (u32)(1<<25));//等待PLLRDY = 1; //配置PLL。9倍频,4*9=26Mhz。注意:PLLSRC必须在PLL关闭的情况下才能配置 //由于我们配置的是HSI/2 就是0 初始化就是0 所以这里没有改变,此程序存在风险 //RCC->CFGR |= (u32)(0x07<<18);//PLLMUL = 0111 ;9倍频 RCC->CFGR |= 1<<18;//3倍频//!!!!!!!!!!!!!!!!这里和之后的的配置是无效的 外部时钟存在相同的多处错误 |
|
|
|
经鉴定,你的程序一直跑在8M的系统时钟下,所以频率是一样的。
|
|
|
|
谢谢指点啊,我仔细看了手册,明白了。程序配置自己还是不小心,分析的不是很到位。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:48 , Processed in 1.069186 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号