2.1 MDK 工程目录结构
Doc | readme.txt 等说明文档 | ||
FreeRTOS | Demo | 板级支持包 | |
License | FreeRTOS 组件 | ||
Source | include | FreeRTOS 源码头文件 | |
portable | FreeRTOS 接口 | ||
Project | MDK 工程及编译过程文件 | ||
User | inc | 用户源码头文件 | |
src | main.c 等源码 |
2.2 MDK 工程搭建
环境:windows11 + MDK-ARM Pro v5.36
1)新建工程,选择Cortex M3内核,后期移植正点原子F103核心板;
2)选择运行环境,CMSIS接口驱动与CM3启动文件,注意启动文件不要选择 C Startup;
ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层【摘自百科】。
配置后,MDK 在 \Project\RTE 目录下生成:头文件目录 \_Target 与 源文件目录 \Device\ARMCM3 (startup_ARMCM3.s、system_ARMCM3.c)。
4)配置 MDK 的编译器为 AC5,以兼容野火的教程,具体原因可查看:【使用FreeRTOS需要更改port.c,AC5使用RVDS下的,AC6使用GCC的】keil编译器从ac5迁移到ac6 - 走看看 (zoukankan.com) ;
3)MDK 工程源码文件分组设置;
4)main.c 代码编写;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int main(void) { short i = 0;
while(1) { if(i < 100) { i++; i++; } else { i = 0; } } } |
启动文件 startup_ARMCM3.s 会在系统执行前,运行复位程序,过程为调用C函数 SystemInit (时钟配置)→ C库函数 __main (初始化系统变量) → __rtentry → main 函数。
5)添加头文件路径;
2.3 MDK 工程仿真配置
1)Debug 配置;
2)查看系统时钟,野火教程提出仿真时钟主频应与代码一致,实际配置时,CM3内核无法修改 XTAL 即晶振频率,可看出目前的启动代码里的外部时钟为 50MHz,系统时钟为其2分配 25MHz;
3)仿真运行;