2.创建一个Demo文件夹
2.1 新建子文件夹User,用于存放用户源程序。
2.2 新建子文件夹Project,用户KEIL工程文件。
2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。
3. 复制源代码到Demo文件夹。
3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。
3.2 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹.。
4. 新建一个Keil MDK工程。
4.1 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行操作。
4.2 选择CPU类型为 STM32F103ZE (这是安富莱STM32开发板采用CPU类型)
4.3 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)
4.4 根据自己的需要修改Target名字。(名字任意)
4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)。
User : 存放用户自己写的源代码。
RVMDK : 存放启动文件(汇编文件)
StdPeriph_Driver : 存放ST标准库文件。
CMSIS : 存放CMSIS接口文件(这也是库的一部分)
4.6 创建好Group后,我们开始依次添加文件。
5. 修改源代码。我们将修改main.c 文件,换成我们自己跑马灯程序。
6. 配置工程, 点击“Options”按钮。
6.1 切换到Output。
选择Object文件夹。
在Create Hex File 前打钩。
6.2 切换带Listing。
选择Listings文件夹
6.3 切换到C/C++
添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)
修改Includes路径
6.4 切换到Debug
选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器。
再 Run to main前打钩。
6.4 切换到Utilities。
选额调试器类型,我们选择Cortex-M3 J-Link。
点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节。
7. 配置工程完毕。下面开始编译。
8. 编译OK,开始调试。
9. 教程结束。
rom地址和容量是根据芯片型号自动选择的,你不能改变。
仔细看下在XXXX.s文件,里边如何引导至main()地址的。
; Reset handler。
Reset_Handler PROC。
EXPORT Reset_Handler [WEAK]。
IMPORT __main
IMPORT SystemInit。
LDR R0, =SystemInit。
BLX R0
LDR R0, =__main。
BX R0
ENDP
芯片启动方式有三种:
1、boot from main flash memory。
该模式主要在往开发板下载程序时使用。JTAG和SWD模式均可。
2、boot from system memory。
该模式主要在项目开发时用到,IC设计出来需要验证一些功能,但没flash的情况下使用。
3、boot from embedded memory。
该模式也多用于项目开发,调试环节。
以上三种模式通过设置boot0、boot1引脚来实现。
boot1 boot0 模式
x 0 1
0 0 2
1 0 3
question:
1、keil下载程序提示无法erase chip。
没添加对应芯片的擦除算法,在魔法棒工具下找添加的设置,若没有对应的算法文件,重新安装xxx.DFP插件(xxx表示芯片所属系列)。
2、程序可以下载到开发板,但硬件没按照代代的写法执行。
可能因为启动方式设置不当,也就是说boot0引脚没接好,将boot0接地。
Keil5数组下标异常是指在使用Keil5编程时,数组的下标可能出现异常,比如数组的下标超出了数组的最大长度,或者下标为负数,这都会导致程序出现异常。为了避免这种情况,我们需要在编写程序时,对数组的下标进行有效的检查,以确保数组的下标不会出现异常。您可以在编写程序时,使用if语句来检查数组的下标,以确保数组的下标不会出现异常。
最好下载一个简单的keil教程,里面言简意赅,很快就可以入手,然后在熟悉一下菜单各个选项的功能,就可以入门了。