下载mdk
个人上传免费的pdf:,或直接到正点原子官网下载
https://www.keil.com/download/
两种建立方式的本质理解
- 库函数是有人基于寄存器已经完成对寄存器的设置,只要根据函数参数意义,调用就可以实现功能
- 函数库更加节省设置寄存器的时间,但对于控制的本质还是操作寄存器
- 所以平常都使用库寄存器的方式创建,寄存器的方式了解查看方式就行
依靠库建立工程主要内容
1. 创建工程文件夹
2. 准备好需要的固件库,(标准库和HAL库(Hardware Abstraction Layer))
3. 参考pdf中先新建了几个文件夹,(使用过开发版的都知道会用到各种外设的头文件(.h)和编译生成文件),这样做为了方便找到各种功能的文件
4. 将文件加入到工程中,如果不加入就不会认定这些文件能够使用
5. 设置输出路径和将头文件加入到c/c++程序路径中,否则编译会报头文件错误
**第2个中的:**和寄存器建立工程最大的不同,不要认为这部分麻烦,在后面大工程调用时就会绝对比操作寄存器方便很多
第3个中的设置的几个文件夹的作用
一个小技巧,使用md命令的bat文件可以快速创建多个文件夹
第4个 将文件加入到工程中
添加工程和文件的关联
第5个,设置输出和头文件路径
下面的宏定义是先预定义了STM32F10X_HD,这么定义是在程序中
#ifdef 预定义的名字
执行的启动文件和定义变量参数
#else
其他处理方式
#endif
个人遇到的问题
1. 编译时发现【Keil5】*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.或者是出现编译出现几百上千错误而且添加了头文件,依然报错没有这个函数。这时编译器的问题,参考,
2.
stm32f1XX固件库中文件内容
依靠寄存器建立工程步骤
1. 打开keil5,新建工程,保存到自己建立的工程文件夹user中
2. 找到寄存器版本中源代码的启动文件,startup_stm32f10x_hs.s,根据实际情况选择启动文件
3. 找到寄存器版本中的system文件夹,复制到自己建立的工程文件夹中
4. 在软件打开的工程中建立对应的工作组(下图),user,system,并把c文件添加进去
5. 打开对工程的配置,两种方式,见下图,设置输出文件位置,生成hex文件,头文件包含等
配置输出
配置头文件
编译内核文件core_cm3.h出现问题,一般是文件版本太低
第一种、修改编译器版本
第二种修改核心文件
这种方法不建议,6虽然编译快,但有很多兼容性问题。而且可能不知道从哪里拷贝的就文件就是使用了旧版本的函数,例如下面这个就是5编译器中的函数,但在第6编译器中不存在。但随着官方对6编译器的支持和5编译器的不更新,6版的编译器可能慢慢成为主流
Rebuild started: Project: reg
*** Using Compiler 'V6.18', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin'
Rebuild target 'Target 1'
../SYSTEM/usart/usart.c(40): error: '#pragma import' is an Arm Compiler 5 extension, and is not supported by Arm Compiler for Embedded 6 [-Warmcc-pragma-import]
#pragma import(__use_no_semihosting)
^
hex文件下载烧录
使用flymcu,isp下载
F4波特率不超过76800,F1可以支持到最高