第三部,编写main.c 文件
#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"
#define CLOCK 72/8
//时钟配置,后续再详细捋时钟这块的东西,现在姑且按照这样设置这者void RCC_Configuration(void) {
ErrorStatus HSEStartUpStatus;
//将RCC寄存器设置为默认值
RCC_DeInit();
//打开外部高速时钟
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速时钟晶振起振
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS){
//设置PLL时钟时钟源及倍频系数
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_16);
//设置AHB时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//设置APB1低速时钟
RCC_PCLK1Config(RCC_HCLK_Div2);
//设置APB2高速时钟
RCC_PCLK2Config(RCC_HCLK_Div1);
//使能PLL
RCC_PLLCmd(ENABLE);
//等待PLL工作
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
//设置系统时钟为PLL时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待系统时钟切换为PLL时钟
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
//打开需要使用的外设的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
}
//延时微妙void delay_us(unsigned int us)
{
u8 n;
while(us--)for(n=0;n
}
int main(){
RCC_Configuration();
//设置GPIOB12 为推挽输出模式,速度为2MHz
GPIO_InitTypeDef gpioInit;
gpioInit.GPIO_Mode=GPIO_Mode_Out_PP;
gpioInit.GPIO_Pin=GPIO_Pin_12;
gpioInit.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOB,&gpioInit);
while(1){
//点亮LED
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
//延时500ms
delay_us(500000);
//关闭LED
GPIO_SetBits(GPIOB,GPIO_Pin_12);
//延时500ms
delay_us(500000);
}
}
第四步,配置并编译烧写程序
点击build按钮,或者rebuild按钮进行编译
编译成功,Build Output输出如下:
无错误,然后可以进行程序烧写,烧写前需要设置Options for target。我使用的是ST-Link,所以需要选择ST-Link Debugger。然后点击后面的Setting按钮,进行其他设置。