前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二)STM32基础——新建基于寄存器的工程模板

(二)STM32基础——新建基于寄存器的工程模板

作者头像
小点点
发布2022-12-12 14:11:19
4170
发布2022-12-12 14:11:19
举报
文章被收录于专栏:小点点

        上次介绍了一下建立基于固件库的工程模板,这次来介绍一下新建基于寄存器的工程模板,因为两者有许多相似之处,所以就简单介绍一下。

        首先在新建一个 TEST 的文件夹,然后在 TEST 文件夹里面新建 USER 文件夹,将工程名字设为 test,保存在这个 USER 文件夹里面,之后,弹出选择器件的对话框。 因为 ALIENTEK 探索者 STM32F4 开发板所使用的 STM32 型号为 STM32F407ZGT6,所以在 这里我们选择 STMicroelectronics --> STM32F4 Series --> STM32F407 --> STM32F407ZG。

这个和之前是类似的,学会了建立基于固件库的工程模板,这个也就会了


        到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。 ST 公司为 STM32F40x 和 STM32F41x 系列的 STM32F4 提供了一个共同的启动文件,名字 为:startup_stm32f40_41xxx.s。我们开发板使用的是 STM32F407ZGT6,属于 STM32F40x 系列 里面的,所以直接使 startup_stm32f40_41xxx.s 这个启动文件即可。不过这个启动文件,我们做了一点点修改,具体是 Reset_Handler 函数,修改后的这个启动文件在开发板光盘 --> 4,程序源码 --> STM32 启动文件 文件夹里面, 这里我们把这个 startup_stm32f40_41xxx.s 拷贝到刚刚新建的 USER 文件夹里面。 在图 3.2.5 中,我们找到 Target1 --> Source Group1 --> 双击 --> 设置打开文件类型为 Asm Source file --> 选择 startup_stm32f40_41xxx.s --> 点击 Add,如图 所示:


        我们在汇编代码里面使能了 FPU,所以在 MDK 里面,我们也要设置使用 FPU, 否则可能代码会无法运行,设置方法如下:选择 Options for Target ‘Target1’,打开 Target 选 项卡,在 Code Generation 里面,选择 Use FPU,如下图所示:


        这里,我们不用 MDK5 自己生成的这两个文件夹来存放中间文件,而是在 TEST 目录下新 建一个新的 OBJ 文件夹来存放这些中间文件。这样,USER 文件夹专门用来存放启动文件 (startup_stm32f40_41xxx.s)、工程文件(test.uvprojx)等不可缺少的文件,而 OBJ 则用来存放 这些编译过程中产生的中间文件(包括.hex 文件也将存放在这个文件夹里面)。然后把 Listings 和 Objects 文件夹里面的东西全部移到 OBJ 文件夹下(当然要先关闭 MDK 软件)。整理后效果如图 所示:

这个和之前是类似的,学会了建立基于固件库的工程模板,这个也就会了。


        由于上面我们还没有任何代码在工程里面,这里我们把系统代码 COPY 过来(即 SYSTEM 文件夹,该文件夹由 ALIENTEK 提供,可以在光盘任何一个实例的工程目录下找到,不过不要 拷贝错了!不要把库函数代码的系统文件夹拷贝到寄存器代码里面用,反之亦然!这些代码在任何 STM32F40x/STM32F41x 的芯片上都是通用的,可以用于快速构建自己的工程,后面会有 详细介绍)。完了之后,TEST 文件夹下的文件如图所示:


        之后在USER文件下新建一个.c文件,将基础代码复制过去,具体如下图所示:

代码语言:javascript
复制
#include "sys.h"
#include "usart.h" 
#include "delay.h" 
int main(void)
{ 
u8 t=0;
Stm32_Clock_Init(336,8,2,7);//初始化时钟为 168Mhz
delay_init(168); //初始化延时函数
uart_init(84,115200); //串口初始化为 115200
while(1)
{
printf("t:%d\r\n",t);
delay_ms(500);
t++;
}
}

        接下来添加头文件路径,具体方法和之前差不多,有一点点变化,具体内容如下所示:

        按照上面的步骤进行以后,基于寄存器的工程模板就算建立完成了,相比于建立基于固件库的工程模板,建立基于寄存器的工程模板相对简单一点,但也是有点麻烦,还是和之前一样,以后建立工程模板的时候,直接拿来用就行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档