从零开始的一个stm32的简单程序的编译

本文从零开始介绍如何在μVision环境中新建一个STM32F103C8的工程,包括选择芯片、配置运行环境、添加C主函数main.c以及解决初次编译时的错误。内容来源于对一篇博客的整理,适合STM32嵌入式新手参考。

1.新建工程

(1)点击左上方Project的New μVision Project到新建的文件夹中
在这里插入图片描述
(2)之后开始选择芯片,这里我选择的是STM32F103系列的STM32F103C8的芯片在这里插入图片描述
(3)下一步会出现运行环境管理器窗口,这是通过选项配置需要的官方库,可以在里面选择需要的文件直接搭建,也可以关掉后自己手动搭建
在这里插入图片描述
CMSIS的CORE
Device的Startup
是必须要选的

当选择多项时出现的警告标志时,点击图中resolve即可解决
在这里插入图片描述点击确定后,工程就创建完成了

2.建立c主函数main.c到工程中

在这里插入图片描述

3.编写main.c的代码

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

#define CLOCK 72/8

void RCC_Configuration(void)   
{   
    ErrorStatus HSEStartUpStatus;   
    RCC_DeInit(); 
    RCC_HSEConfig(RCC_HSE_ON);
    HSEStartUpStatus = RCC_WaitForHSEStartUp();
    if(HSEStartUpStatus == SUCCESS){  
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_16);
        RCC_HCLKConfig(RCC_SYSCLK_Div1); 
        RCC_PCLK1Config(RCC_HCLK_Div2);
        RCC_PCLK2Config(RCC_HCLK_Div1); 
        RCC_PLLCmd(ENABLE);
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)    
        {   
        } 
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        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<CLOCK;n++);     
}

int main(){
    RCC_Configuration();
    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){
        GPIO_ResetBits(GPIOB,GPIO_Pin_12);
        delay_us(500000);
        GPIO_SetBits(GPIOB,GPIO_Pin_12);
        delay_us(500000);
    }

}

代码转载于
链接: https://blog.csdn.net/junzia/article/details/77435725.

第一次编译时碰到如下错误
在这里插入图片描述只需要在最后一行按两下空格即可解决

然后再进行编译,就不会报错了
在这里插入图片描述
(如有错误请指正,谢谢)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值