1.以参考标准库中GPIO例程为例来,来新建工程。
2.新建“GPIO”文件,在GPIO文件夹内建立user文件夹。
3.制MDK安装目录下的4个文件。
如“C:UsersAdministratorAppDataLocalArmPacksARMCMSIS5.7.0CMSISCoreInclude”目录下的“cmsis_armcc.h”“cmsis_compiler.h”“cmsis_version.h”“core_cm0plus.h”文件。在user文件夹下新建“SYSLIB”文件夹,并将这4个文件复制进去,如图1所示。
图1 复制文件
4.复制标准库中“CW32F030_StandardPeripheralLib_V1.8Examplesgpiogpio_input_outputUSER”目录下的SRC文件夹与INC文件夹到GPIO文件夹下的USER文件夹里。
5.将标准库中的Libraries、IdeSupport文件夹复制到新建的GPIO工程文件里面,如图2所示。
图2 复制到新建GPIO工程文件
6.打开MDK开发环境,选择“Project”/“New μVision Project”命令,新建工程,如图3所示。
图3新建工程文件
7.为工程输入名称,并保存在刚才所建立的GPIO文件夹内,之后会弹出选择芯片型号,如图4所示。
图4 选择ARMCMOP
8.单击“OK”按钮并进行保存。
9.右键单击“Target 1”,在弹出的菜单中选择“Manage Project items”命令,在工程目录中添加.c文件,如图5所示。
图5 添加.c文件
10.在出现的对话框中,增加user和Library文件夹,并添加标准库的.c源文件到Library的Groups,如图6所示。
图6 添加库.c文件
11.添加user文件夹下SRC文件夹下的文件到user Groups,如图7所示。
图7 添加user Groups
12.添加启动文件。启动文件“startup_cw32f030.s”在标准库“IdeSupportMDK”路径下,如图8所示。
图8 添加启动文件
13.单击“Options for Target‘Target 1’”项目,单击C/C++(AC6)选项卡,如图9所示,在Include Paths编辑框中添加标准库.H文件的路径,最后单击“OK”按钮完成头文件。
图9 添加头文件与.c文件
14.选择“Target”选项卡,在“ARM Compiler”框中选择“Use default compiler version 5”选项,然后单击“OK”,如图10所示。
图10 选择“Use default compiler version 5”选项
15.选择“Debug”选项卡,保持默认“Use Simulator”被选中。
注意:如果使用硬件调试器+目标板开发调试,请选中“Use”,然后修改调试器为“CMSIS-DAP Debugger”(使用CW-DAPLINK或DAP兼容调试器时选择该选项。如果使用其它调试器,请选择合适的对应选项),如图11所示。
图11 修改调试器为“CMSIS-DAP Debugger”
16.选择“Utilities”项,单击“Settings”按钮,在弹出的对话框中选择“FLASH Download”选项,如图12所示。
图12 选择“FLASH Download”选项
17.单击“Add”按钮,找到“CW32F030”的FLASH烧写算法,单击“Add”按钮添加,如图13所示。
图13 添加“CW32F030”的FLASH烧写算法
18.在“Project”菜单中选择“Rebuild all target files”以编译项目。如果项目编译成功,将显示以下窗口,如图14所示。
图14 成功编译CW32F030项目显示窗口
19.根据需要修改源代码。完成编写后,如需要硬件调试,则接入DAPLINK调试器到目标板上,并为目标板供电。然后在MDK IDE中,从调试菜单中选择“开始/停止”调试会话或单击工具栏中的“开始/停止”调试会话按钮,以对FLASH存储器进行编程并开始调试,如图15所示。
图15 对FLASH存储器进行编程并调试
20.MDK-ARM中的调试器可用于用C语言和汇编语言调试源代码,设置断点,以及监控各个变量和代码执行过程中发生的事件,如图16所示。
图16 MDK-ARM中调试器使用事件
至此,可以使用MDK初步开发CW32的相关应用了。
以CW32F030为例,演示如何快速实现点亮一个LED。
1、软件准备
2、硬件准备
硬件准备实物图,如图17所示。
图17 硬件准备
3、代码修改
CW32核心板上面有一个LED2指示灯,其控制端口连接至PC13,如图18所示。从图中不难分析,当PC13端口置为低电平时,LED指示灯亮。
图18 LED指示灯电路
打开2.4.1小节创建的工程模板,修改主程序代码如下。
int32_t main(void) { GPIO_InitTypeDef GPIO_InitStruct; CW_SYSCTRL- >AHBEN_f.GPIOC = 1; //打开GPIOC时钟 //设置PC13为输出模式 GPIO_InitStruct.Pins = GPIO_PIN_13; //PC13端口 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //配置为推挽输出模式 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;//高速模式 GPIO_Init(CW_GPIOC, &GPIO_InitStruct);//初始化端口 PC13_SETLOW(); //置低PC13,点闪LED2 while (1); }
在MDK环境下修改代码,如图19所示。
图19 指示灯控制的代码
4、下载测试
连接CWDAPLINK至目标核心板,并给核心板插入USB线供电,电源指示灯LED1红灯亮起,代表板子电源供电正常。请注意,此时LED2是熄灭状态,如图20所示。
图20 实物连接图
在MDK工程中,配置下载器为DAP类型的调试工具,如图21所示。
图21 下载器选项配置
5、下载并运行程序
下载程序完成后,按SW1红色复位键先进行复位,以确保程序的可靠运行。复位运行后,可以看到:核心板上面的电源指示灯LED1红灯仍然常亮,下面的LED2蓝灯受程序控制,已经被点亮,如图22所示。
图22 程序运行,LED2被点亮
如果要控制LED2灯熄灭,又该如何修改代码呢?
参考代码如下:
int32_t main(void) { GPIO_InitTypeDef GPIO_InitStruct; CW_SYSCTRL- >AHBEN_f.GPIOC = 1; //打开GPIOC时钟 //设置PC13为输出模式 GPIO_InitStruct.Pins = GPIO_PIN_13; //PC13端口 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //配置为推挽输出模式 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;//高速模式 GPIO_Init(CW_GPIOC, &GPIO_InitStruct);//初始化端口 PC13_SETHIGH();//置高PC13,熄灭LED2 while (1); }
如果要控制LED2灯闪烁,又该如何修改代码呢?
参考代码如下:
int32_t main(void) { unsigned long i; GPIO_InitTypeDef GPIO_InitStruct; CW_SYSCTRL- >AHBEN_f.GPIOC = 1; //打开GPIOC时钟 //设置PC13为输出模式 GPIO_InitStruct.Pins = GPIO_PIN_13; //PC13端口 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //配置为推挽输出模式 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;//高速模式 GPIO_Init(CW_GPIOC, &GPIO_InitStruct);//初始化端口 while (1) { for(i=0;i< 600000;i++); //延时 PC13_TOG(); //PC13指示灯IO反转 } }
全部0条评论
快来发表一下你的评论吧 !