打印
[其他ST产品]

Keil安装芯片包、下载固件库、建立STM32工程模板

[复制链接]
楼主: 丢丢手绢666
手机看帖
扫描二维码
随时随地手机跟帖
61
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
   (16)接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢?这是因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤 16,定位到 c/c++界面,然后填写
“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD。然后点击 OK。

使用特权

评论回复
62
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者
STM32F103ZET6 选择 STM32F10X_HD

        STM32F103C8T6 选择 STM32F10X_MD

使用特权

评论回复
63
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者

使用特权

评论回复
64
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者
    (17)这次在编译之前,我们记得打开工程 USER 下面的 main.c,删除main.c底下的所有代码,复制下面代码到 main.c 中,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告),可以看到,这次编译已经成功了。

使用特权

评论回复
65
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者
#include "stm32f10x.h"
void Delay(u32 count)
{
        u32 i=0;
        for(;i<count;i++);
}

int main(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);  //使能 PB,PE 端口时钟
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                                                         //LED0-->PB.5 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                         //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                        //IO 口速度为 50MHz
        GPIO_Init(GPIOB, &GPIO_InitStructure);                                                                                 //初始化 GPIOB.5
        GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                                                         //PB.5 输出高
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                                                        //LED1-->PE.5 推挽输出
        GPIO_Init(GPIOE, &GPIO_InitStructure);                                                                                 //初始化 GPIO
        GPIO_SetBits(GPIOE,GPIO_Pin_5);                                                                                         //PE.5 输出高
        while(1)
        {
                GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                GPIO_SetBits(GPIOE,GPIO_Pin_5);
                Delay(3000000);
                GPIO_SetBits(GPIOB,GPIO_Pin_5);
                GPIO_ResetBits(GPIOE,GPIO_Pin_5);
                Delay(3000000);
        }
}

使用特权

评论回复
66
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者

使用特权

评论回复
67
丢丢手绢666|  楼主 | 2023-12-21 16:39 | 只看该作者
(18) 这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

使用特权

评论回复
68
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者
  (19)重新编译代码,可以看到生成了 hex 文件在 OBJ 目录下面,这个文件我们用 flymcu 下载到 mcu 即可。到这里,一个基于固件库 V3.5 的工程模板就建立了。

使用特权

评论回复
69
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者
(20)实际上经过前面 19 个步骤,我们的工程模板已经建立完成。但是正点原子提供的实验中,每个实验都有一个 SYSTEM 文件夹,下面有 3 个子目录分别为 sys,usart,delay,存放的是我们每个实验都要使用到的共用代码,该代码是由正点原子编写,我们这里只是引入到工程中,方便后面的实验建立工程。随便找一个正点原子的工程文件,把底下的 SYSTEM 文件夹拷贝到我们自己建的Template文件下。

使用特权

评论回复
70
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者

使用特权

评论回复
71
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者
    打开 SYSTEM 文件夹可以看到三个文件里面有三个子文件夹分别为delay,sys,usart,每个子文件夹下面都有相应的.c 文件和.h 文件。我们接下来要将这三个目录下面的代码加入到我们工程中去。

使用特权

评论回复
72
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者
      用我们之前讲解步骤 13 的办法,在工程中新建一个组,命名为 SYSTEM,然后加入这三
个文件夹下面的.c 文件分别为 sys.c,delay.c,usart.c,如下图:

使用特权

评论回复
73
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者

使用特权

评论回复
74
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者
        然后点击“OK”之后可以看到工程中多了一个 SYSTEM 组,下面有 3 个.c 文件。

使用特权

评论回复
75
丢丢手绢666|  楼主 | 2023-12-21 16:40 | 只看该作者

使用特权

评论回复
76
丢丢手绢666|  楼主 | 2023-12-21 16:41 | 只看该作者
     接下来我们将对应的三个目录(sys,usart,delay)加入到 PATH 中去,因为每个目录下面都有相应的.h 头文件,这请参考步骤 15 即可,加入后的截图是:

使用特权

评论回复
77
丢丢手绢666|  楼主 | 2023-12-21 16:41 | 只看该作者
最后点击 OK。这样我们的工程模板就彻底完成了,这样我们就可以调用正点原子提供的
SYSTEM 文件夹里面的函数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则