本文介绍了通过Keil开发工具,在已有工程源码的情况下建立一个Cortex-M0工程的基本流程,并通过串口打印数据来表明程序能够成功运行。
1. 创建工程
建立新工程 Project -> New uVision Project
2. 选择器件ARMCM0
2. 向工程中添加文件
1. 在工程根目录下,创建Include目录,并添加文件:
CMSDK_CM0.h 核内外设访问层Core Peripheral Access Layer
core_cm0.h 核内外设访问层Core Peripheral Access Layer,定义了使用的CMSIS版本、Cortex内核、工具链,提供了核内外设访问层的定义,例如核内外设的数据结构和地址映射,也提供了一些访问Cortex-M0核内寄存器及外设的静态内联函数
system_CMSDK_CM0.h 片上外设访问层Device Peripheral Access Layer,和system_CMSDK_CM0.c定义了系统初始化函数SystemInit ()和一些指示时钟的变量。
这一目录下通常存放CMSIS相关头文件
2. 继续在工程目录下,创建Hardware目录,并添加文件
cortex_uart.c, cortex_uart.h 定义了串口操作相关函数,如uart的初始化、接收和发送
cortex_gpio.c, cortex_gpio.h 定义了GPIO操作相关函数,如gpio初始化等
3. 在工程目录下,创建Source目录,并添加文件
main.c 用户自定义main函数
startup_CMSDK_CM0.s M0启动文件
startup_CMSDK_CM0.c
headinclude.h 包含了各外设的头文件
4. 回到Keil,右键Target1,添加新group,分别重命名为:Application, Hardware, Include, Startup
向Application中添加文件main.c
向Hardware中添加文件cortex_uart.c, cortex_gpio.c
向System中添加文件startup_CMSDK_CM0.c
向Startup中添加文件startup_CMSDK_CM0.s
5. 编译后的结构
6. 设置C/C++中的Define为CORTEX_M0,将之前建立的目录包含到Include Paths中 ./Include; ./Hardware; ./Source
7. 根据根据实际情况,由自己的调试方式来配置调试选项
3. 运行和调试
编译通过后点击调试
可以发现已经进入了main函数,开始执行第一行代码。
继续运行程序,可以发现在执行printf后串口助手收到数据