一、
在桌面新建一个 TEST 的文件夹,然后在 TEST 文件夹里面新建 USER 文件夹,将工程名
字设为 test,保存在这个 USER 文件夹里面,选择对应芯片的安装包
启动代码作用:
1、堆栈(SP)的初始化;
2、初始化程序计数器(PC);
3、设置向量表异常事件的入口地址;
4、调用 main 函数。
Reset_Handler函数修改:
0xE000ED88 就是协处理器控制寄存器(CPACR)的地址,该寄存器的第 20~23位用来控制是否支持浮点运算,这里我们全设置为 1,以支持浮点运算。
在汇编代码里面使能了 FPU,所以在 MDK 里面,我们也要设置使用 FPU
否则可能代码会无法运行,设置方法如下:选择 Options for Target ‘Target1’,打开 Target 选
项卡,在 Code Generation 里面,选择 Use FPU
实际上没有FPU这个选项 不知道会有什么影响
注意所使用板的晶振频率,本次是8MHZ
二、上面都设置好之后,加入启动文件
编写的代码是寄存器版本的,那么加入的启动文件就必须是寄存器的
先将启动文件复制到USER文件夹下,然后再进行下图的操作
Listings 和 Objects,是 MDK5 自行创建的,用于保存编译过程中生成的一些文件
三、
新建OBJ文件夹存放编译过程中的中间文件
综上:最终,USER文件夹存放启动文件和工程文件,OBJ存放中间过程文件
然后把 Listings和 Objects 文件夹里面的东西全部移到 OBJ 文件夹下(当然要先关闭 MDK 软件)
四、拷贝SYSTEM文件夹
五、加入这两个文件夹中的内容
新建主函数文件并保存在USER文件夹下
六、过程文件更改路径![
![在这里插入图片描述](https://img-blog.csdnimg.cn/6cb4a3fa560b4b34aacde35298be7d27.png)
七、加入头文件
这里特别提醒大家:图中 1 处设置的 STM32F40_41xxx 宏,是为了兼容低版本的 MDK(比
如 MDK4/MDK3 等)才添加的,MDK5 在你选择器件的时候,就会内部定义这个宏,因此在
MDK5 下面,这里不设置也是可以的。但是为了兼容低版本的 MDK,我们还是将这个宏添加
进来。
图中 2 处是编译器优化选项,有-O0~-O3 四种选择(default 则是-O2),值越大,优化效果
越强,但是仿真调试效果越差。这里我们选择-O0 优化,以得到最好的调试效果,方便开发代
码,在代码调试结束后,大家可以选择-O2 之类的优化,得到更好的性能和更少的代码占用量。
图中 3 处,One ELF Section per Function 主要是用来对冗余函数的优化。通过这个选项,
可以在最后生成的二进制文件中将冗余函数排除掉,以便最大程度地优化最后生成的二进制代
码,所以,我们一般勾选上这个,这样可以减少整个程序的代码量。
然后在 Include Paths 处(4 处),点击 5 处的按钮。在弹出的对话框中加入 SYSTEM 文件
夹下的 3 个文件夹名字,把这几个路径都加进去(此操作即加入编译器的头文件包含路径,后
面会经常用到)。如图 3.2.22 所示:
串口下载的时候就是下载HEX文件到芯片
八、创建主函数.c文件
主函数中一定要有内容,否则程序不运行
#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++;
}
}
总结:1.新建项目
2.加入启动文件
先在文件夹中加入
再在软件中加入
加入启动文件需要设置use FPU
3.移动中间过程文件并设置过程文件生成文件夹路径为OBJ
4.拷贝SYSTEM文件夹
5.加入USER 和 SYSTEM的.c文件
6.加入头文件和路径(上面第七步)
7.创建主函数.c文件,并且应编写代码,否则会报错