STM32单片机_新建工程

STM32新建工程

1. 新建空白文件夹

新建空白文件夹📁存放工程

2. 打开Keil

  1. 点击Project👷
  2. 点击New Project
  3. 选择我们刚刚新建的文件夹📂,并给工程起个名字,例如:Project
  4. 点击保存,选择器件型号,例如 STM32F103C8,单击🆗
  5. 关闭新建工程小助手

3. 拷贝工程必要文件

  1. Start📁
    在这里插入图片描述

  2. 将拷贝到Start📁 中的文件添加到工程之中

    1. 在Keil工程之中 双击Target1 之下的 source group 1的字符的左侧,修改名称为Start(虽然Keil支持文件在不同文件夹 但是)

    2. 右键🖱️文件夹,添加拷贝的文件到组中,添加顺序".s"文件 (根据芯片型号)➡️添加".c"文件➡️添加".h"文件。
      在这里插入图片描述

    3. 添加Start group到文件编译路径
      在这里插入图片描述

4. 新建main.c文件测试编译(以寄存器开发的配置)

  1. 在工程文件夹下面新建一个文件夹起名User,用来存放main函数

  2. 在Keil工程中右键Target1点击Add group,按照前文方法,改名为User

  3. 右键User 新建".c"文件main 到User目录下
    在这里插入图片描述

  4. 在main.c中编辑一小段代码,试编译 没出错说明前面执行正确 如果编译错误❌需要检查,并搜索🔍解决办法

  5. 试编译

   #include "stm32f10x.h"                  // Device header
   int main(void )
   {
      while(1)
      {
            
      }
   }
  1. 寄存器点灯

    #include "stm32f10x.h"                  // Device header
    
    int main(void )
    {
       RCC->APB2ENR = 0x00000010;
       GPIOC->CRH = 0x00300000;
       GPIOC->ODR = 0x00002000;	//PC13 引脚 状态两者选其一
       // GPIOC->ODR = 0x00000000;
       
       while(1)
       {
          
       }
    }
    
    

5. 以库函数开发的工程配置(在寄存器开发的基础上)

  1. 在工程文件夹下面新建一个文件夹起名Library📖,用来存放库函数

  2. 在Keil工程中右键Target1点击Add group,并改名为Library,再添加group到编译路径

  3. 复制代码文件到Library文件夹,并在Keil工程中添加全部的文件到组中(注意选择All files)在这里插入图片描述

  4. 新添加三个文件到User文件夹中,注意加入到工程组中去在这里插入图片描述

  5. 添加宏定义USE_STDPERIPH_DRIVER(在stm32f10x.h的第8296行)否则编译会报错在这里插入图片描述

  6. 点灯

    #include "stm32f10x.h"                  // Device header
    
    int main(void)
    {
       /*开启时钟*/
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	//开启GPIOC的时钟
                                                 //使用各个外设前必须开启时钟,否则对外设的操作无效
       
       /*GPIO初始化*/
       GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
       
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				//GPIO引脚,赋值为第13号引脚
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
       
       GPIO_Init(GPIOC, &GPIO_InitStructure);					//将赋值后的构体变量传递给GPIO_Init函数
                                                 //函数内部会自动根据结构体的参数配置相应寄存器
                                                 //实现GPIOC的初始化
       
       /*设置GPIO引脚的高低电平*/
       /*若不设置GPIO引脚的电平,则在GPIO初始化为推挽输出后,指定引脚默认输出低电平*/
    //	GPIO_SetBits(GPIOC, GPIO_Pin_13);						//将PC13引脚设置为高电平
       GPIO_ResetBits(GPIOC, GPIO_Pin_13);						//将PC13引脚设置为低电平
       
       while (1)
       {
          
       }
    }
    
    

6. Keil界面优化

在这里插入图片描述

  1. 小扳手🔧
  2. Colors & Fonts 修改C/C++ 和Asm Editor,点击Font,选择Size为14
  3. Editor ➡️ Encoding ,选择UTF-8可以避免中文乱码问题,不行就多试几个,比如还有GB2312,打开别人的工程出现乱码的情况也是这样
  4. Editor ➡️ Tap size选择4
  5. 根据实际情况,修改调试方法,例如stlink
    在这里插入图片描述

7. 备注&总结

  1. ".s"文件的选择

    缩写释义Flash容量型号
    LD_VL小容量产品超值系列16~32KSTM32F100
    MD_VL中容量产品超值系列64~128KSTM32F100
    HD_VL大容量产品超值系列256~512KSTM32F100
    LD小容量产品16~32KSTM32F101/102/103
    MD中容量产品64~128KSTM32F101/102/103
    HD大容量产品256~512KSTM32F101/102/103
    XL加大容量产品大于512KSTM32F101/102/103
    CL互联型产品-STM32F105/107
  2. 为方便项目管理,需要使Group 和 文件夹同名,同时记得添加对应文件夹到路径中去,点击品字符号可以调整各个不同group之间的上下位置,优化界面方便管理

  3. 注意添加添加宏定义USE_STDPERIPH_DRIVER

代码下载链接

链接:https://cloud.189.cn/web/share?code=2MzqeyIBfEnm(访问码:rdh4)

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值