KEIL5新建工程0810

发布时间 2023-08-10 23:08:57作者: 磕伴

 

 

 

在保存各种项目的文件夹内创建一个项目文件夹1
新建工程到文件夹1

选择芯片
添加工程的必要文件(固件库)

STM32程序是从启动文件开始,复制这些文件到文件夹A的新建Start文件夹下

stm32f10x.h  外设寄存器描述文件(寄存器名称以及地址)
system_stm32f10x.c 配置时钟

这三个文件也复制到Start文件夹下

STM32是内核和内核外围设备组成,而且这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件

 也也复制到Start文件夹下

暂时OK

把对应的文件添加到项目中,  //具体芯片对应哪个启动文件可查看本文结尾

 添加头文件路径到工程选项(魔术棒)

 创建文件夹

 此时在main文件中添加下面代码,使用寄存器开发

#include "stm32f10x.h"
int main(void)
{
    while(1)
    {
        
    }
}

配置UTF8

配置调试器

测试代码

#include "stm32f10x.h"
int main(void)
{
    RCC->APB2ENR=0x00000010 ; //打开GPIOC的时钟
    GPIOC->CRH=0x00300000;    //输出模式   推挽输出
    //GPIOC->ODR=0x00000000;    //全0 PC13的灯亮,0002000灭
    GPIOC->ODR=0x0002000;
    while(1)
    {
    
    }
}

 

 

添加库函数   misc杂项,为内核库函数,其他的为外设库函数

 

 

 全部复制到新建的文件夹Library

 

over

 

 

stm32f10x_conf.h

配置库函数头文件的包含关系,用来参数检查的函数定义,库函数都需要

stm32f10x_it.c interrupt  文件存放中断函数
   

三个文件复制到User文件夹下,同时添加到工程对应文件夹内

 

定义相关

 

基于库函数的工程OK

 简单使用库函数

#include "stm32f10x.h"
int main(void)
{
    //RCC->APB2ENR=0x00000010 ; //打开GPIOC的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    //GPIOC->CRH=0x00300000;    //输出模式   推挽输出
    GPIO_InitTypeDef A;
    A.GPIO_Mode=GPIO_Mode_Out_PP  ; //通用推挽输出
    A.GPIO_Pin=GPIO_Pin_13;
    A.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &A );  //13口的LED  HEX=C
    //GPIOC->ODR=0x00000000;    //全0 PC13的灯亮,0002000灭
    //GPIOC->ODR=0x0002000;
    GPIO_SetBits(GPIOC,GPIO_Pin_13);  //高电平
    //GPIO_ResetBits(GPIOC,GPIO_Pin_13);  //低电平   亮
    while(1)
    {
    
    }
}

 

 PS

启动文件对应芯片型号

 

项目整体结构分析    1 2主动执行 ,3 被动执行

 汇编写的调用