基于正点原子将单片机是STM32F103C8T6修改为内部时钟,最后时钟为36M

平时在做项目的时候都用的是外部晶振做为时钟源,想试试用内部RC振荡器做为时钟源,在网上搜了一下如何设置内部时钟,发现资料比较少的。决定将设置内部RC振荡器做为时钟源的方法记录下来。
用的单片机是STM32F103C8T6,项目工程是在正点原子的示例代码上修改来的。用一个LED工程测试,在主程序中闪烁LED灯。

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
int main ( void )
{
    delay_init();       //延时函数初始化
    LED_Init();         //初始化与LED连接的硬件接口
    while ( 1 )
    {
        LED = 0;
        delay_ms ( 100 ); //延时300ms
        LED = 1;
        delay_ms ( 100 ); //延时300ms
    }
}

首先使用默认时钟设置,也就是外部8M晶振做为时钟源。LED灯灭100ms,然后再亮100ms。
下来看默认时钟设置的代码:
在 system_stm32f10x.c 文件里面, SystemInit()函数设置时钟。

void SystemInit (void)
{
    /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
    /* Set HSION bit */
    RCC->CR |= (uint32_t)0x00000001;
    /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F

你可能感兴趣的:(stm32学习,stm32,单片机)