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)仿真运行;