当前位置:首页 > 单片机 > 单片机
[导读]ST公司提供的时钟芯片是8MHZ,但是由于国内技术的局限性和国外技术的垄断,8M的芯片约2元/片,16M大约就是几毛钱,所以考虑成本,设计中往往需要使用16MHZ的电平,但是ST公司提供的是库函数的默认的系统时钟是8M,所

ST公司提供的时钟芯片是8MHZ,但是由于国内技术的局限性和国外技术的垄断,8M的芯片约2元/片,16M大约就是几毛钱,所以考虑成本,设计中往往需要使用16MHZ的电平,但是ST公司提供的是库函数的默认的系统时钟是8M,所以相关的PLL的倍频因子也是设置的是9(RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);),若使用16M的晶振,则需要进行相关代码的修改;

第一步,全局搜索HSE_VALUE

#define HSE_VALUE((uint32_t)8000000)
修改为:
#define HSE_VALUE((uint32_t)12000000)

第二步,打开system_stm32f10x.c,修改PLL参数,将

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
修改为:

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);//12MHZ,SYSCLK=HSE*6=72MHZ

或者一句RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6); 就可以解决了

第三步,这一步是对于使用IDE软件调试软件的同学

MDK软件上的“options..”的晶振的设置。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭