``在正点原子的 论坛里那里有人需要做以下:
STM32F103ZET6的时钟初始化,处理器使用内部8M时钟晶振,将处理器的主频设置为48M。
个人觉得这个很好玩。
一,系统时钟的配置是新手们最头痛的事,包括我这种新手在内,对这东西是略有恐惧的,但是不论正点原子还是野火的教程都似乎没有太多的内容讲解。
刚入门怎么办?嘻嘻,个人建议不懂就跳过,回头再看,不必死纠结。我现在算是回头再看的阶段了。
二,关于内部时钟的例子真的很少,原因很简单,有太多的理由建议大家使用HSE,而不用HSI。
看库函数的例程时,并没有发现配置系统时钟的,但大家看正点原子的例程就知道,是有一个SystemLnit来配置的。
汇编我还没学,但据说这里就呈现了,在main运行之前,是运行了一个systemlnit的函数。要配置系统时钟就修改那个函数。那函数是放在system_stm32f10x.c里面。嘻嘻,到这里,我回想到当初使用原子的例程时,要把这两行删去。
半抄半修改,大概完成了处理器使用内部8M时钟晶振,将处理器的主频设置为48M。(实际上,我没有如证明主频的确为48M,只是我算出来并编程而已。)
- void SystemInit (void)
- {
- /* Set HSION bit */
- RCC->CR |= (uint32_t)0x00000001;
-
- // select HSI as PLL source
- RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2;
-
- //PLLCLK=8/2*12=48M
- RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL12;
-
- /* HCLK = SYSCLK/4 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV4;
-
- /* Enable PLL */
- RCC->CR |= RCC_CR_PLLON;
-
- /* Wait till PLL is ready */
- while((RCC->CR & RCC_CR_PLLRDY) == 0)
- {
- }
- /* Select PLL as system clock source */
- RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
- RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
-
- /* Wait till PLL is used as system clock source */
- while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
- {
- }
- }
复制代码
YY_STM32板上可运行,基于第一课的,可以明显看出LED闪亮是慢了一点,当然这只能说明我改变了频率而已,我使用 仿真时的截图来证明我是在使用HSI运行。
附上源程序。
``
|
|
|
|
好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶好资料,顶顶
|
|
|
|
|
找了很久,谢谢楼主
|
|
|
|
|
STM32 提供的标准初始化时钟程序中会判断,如果使用外部8M晶振工作成功(意味着板子上装有8M晶振,将使用外部震荡源做时钟,如果失败则自动使用内部8M RC作为震荡源做时钟。
|
|
|
|
|
唐辉电子,深耕晶振行业15年,非常专业,行业公认。
唐辉电子官网上,有多篇晶振应用方面的文章,邀您分享。
常见频率,如32.768KHZ、8M、11.0592M、12M,我们都有现货在手,少许样品,免费给您。
|
|
|
|
|