STM32F103初始化程序
时间: 2023-10-09 20:10:28 浏览: 44
以下是STM32F103初始化程序的示例代码:
```c
#include "stm32f10x.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
int main(void)
{
RCC_Configuration(); // 配置系统时钟
GPIO_Configuration(); // 配置GPIO
while (1)
{
// 主程序
}
}
void RCC_Configuration(void)
{
RCC_DeInit(); // 复位RCC
RCC_HSEConfig(RCC_HSE_ON); // 开启外部晶体振荡器
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // 等待外部晶体振荡器稳定
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // PLL时钟源为外部晶体振荡器,倍频系数为9
RCC_PLLCmd(ENABLE); // 开启PLL
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 等待PLL稳定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 系统时钟源为PLL
while (RCC_GetSYSCLKSource() != 0x08); // 等待PLL成为系统时钟源
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 开启GPIOC时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // PC13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); // 初始化GPIOC
}
```
这个程序主要完成了以下两个任务:
- 配置系统时钟,使其为72MHz
- 配置GPIOC的PC13引脚为推挽输出模式,并使其输出高电平
其中,RCC_Configuration函数用来配置系统时钟,GPIO_Configuration函数用来配置GPIO。在主程序中,可以进行其他的任务处理。