0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32快速开发入门

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2024-04-24 18:56 次阅读

一、 CW32工程模板创建

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所示。

wKgaomYo0m2Aa-njAABTppo-ta855.webp

图1 复制文件

4.复制标准库中“CW32F030_StandardPeripheralLib_V1.8Examplesgpiogpio_input_outputUSER”目录下的SRC文件夹与INC文件夹到GPIO文件夹下的USER文件夹里。

5.将标准库中的Libraries、IdeSupport文件夹复制到新建的GPIO工程文件里面,如图2所示。

wKgZomYo0m2ADaQWAABDlOhzVyE04.webp

图2 复制到新建GPIO工程文件

6.打开MDK开发环境,选择“Project”/“New μVision Project”命令,新建工程,如图3所示。

wKgaomYo0m6Ac_AGAABpCGXIIC887.webp

图3新建工程文件

7.为工程输入名称,并保存在刚才所建立的GPIO文件夹内,之后会弹出选择芯片型号,如图4所示。

wKgZomYo0m-Ac9TMAAA3MB4Sc6k04.webp

图4 选择ARMCMOP

8.单击“OK”按钮并进行保存。

9.右键单击“Target 1”,在弹出的菜单中选择“Manage Project items”命令,在工程目录中添加.c文件,如图5所示。

wKgaomYo0m-AXw2SAABCAMKR_7w40.webp

图5 添加.c文件

10.在出现的对话框中,增加user和Library文件夹,并添加标准库的.c源文件到Library的Groups,如图6所示。

wKgaomYo0nCATT0YAABERN3_7eM34.webp

图6 添加库.c文件

11.添加user文件夹下SRC文件夹下的文件到user Groups,如图7所示。

wKgZomYo0nGAYPqUAAAlRBD3GxE13.webp

图7 添加user Groups

12.添加启动文件。启动文件“startup_cw32f030.s”在标准库“IdeSupportMDK”路径下,如图8所示。

wKgaomYo0nGARMqjAAB4zqcCRlw65.webp

图8 添加启动文件

13.单击“Options for Target‘Target 1’”项目,单击C/C++AC6)选项卡,如图9所示,在Include Paths编辑框中添加标准库.H文件的路径,最后单击“OK”按钮完成头文件。

wKgZomYo0nOAPfrpAABiwH0uIJ411.webp

图9 添加头文件与.c文件

14.选择“Target”选项卡,在“ARM Compiler”框中选择“Use default compiler version 5”选项,然后单击“OK”,如图10所示。

wKgaomYo0nWAA_oFAABW9lBboAU93.webp

图10 选择“Use default compiler version 5”选项

15.选择“Debug”选项卡,保持默认“Use Simulator”被选中。

注意:如果使用硬件调试器+目标板开发调试,请选中“Use”,然后修改调试器为“CMSIS-DAP Debugger”(使用CW-DAPLINK或DAP兼容调试器时选择该选项。如果使用其它调试器,请选择合适的对应选项),如图11所示。

wKgZomYo0nWAbi8zAACLGq-gZIc45.webp

图11 修改调试器为“CMSIS-DAP Debugger”

16.选择“Utilities”项,单击“Settings”按钮,在弹出的对话框中选择“FLASH Download”选项,如图12所示。

wKgaomYo0naAJS-7AABeLNh9yuw17.webp

图12 选择“FLASH Download”选项

17.单击“Add”按钮,找到“CW32F030”的FLASH烧写算法,单击“Add”按钮添加,如图13所示。

wKgZomYo0naANWmXAAB8OIyf89U70.webp

图13 添加“CW32F030”的FLASH烧写算法

18.在“Project”菜单中选择“Rebuild all target files”以编译项目。如果项目编译成功,将显示以下窗口,如图14所示。

wKgZomYo0neAWi5qAADNLCPPpPc32.webp

图14 成功编译CW32F030项目显示窗口

19.根据需要修改源代码。完成编写后,如需要硬件调试,则接入DAPLINK调试器到目标板上,并为目标板供电。然后在MDK IDE中,从调试菜单中选择“开始/停止”调试会话或单击工具栏中的“开始/停止”调试会话按钮,以对FLASH存储器进行编程并开始调试,如图15所示。

wKgaomYo0niAGXrDAAATXG0CLks80.webp

图15 对FLASH存储器进行编程并调试

20.MDK-ARM中的调试器可用于用C语言汇编语言调试源代码,设置断点,以及监控各个变量和代码执行过程中发生的事件,如图16所示。

wKgZomYo0niAd506AACLhAHwCBU77.webp

图16 MDK-ARM中调试器使用事件

至此,可以使用MDK初步开发CW32的相关应用了。

二、 快速点亮一个LED

以CW32F030为例,演示如何快速实现点亮一个LED。

1、软件准备

  • MDK开发环境已安装完成。
  • CW32固件库已下载
  • 芯片PACK包已安装。
  • 工程模板已创建。

2、硬件准备

  • 准备一套调试器CW-DAPLINK(或其他兼容调试器)。
  • 一个CW32F030的核心板(具体实物可参考第8章内容)。
  • USB供电线。

硬件准备实物图,如图17所示。

wKgZomYo0nmAKg2OAABH8BBMM2U49.webp

图17 硬件准备

3、代码修改

CW32核心板上面有一个LED2指示灯,其控制端口连接至PC13,如图18所示。从图中不难分析,当PC13端口置为低电平时,LED指示灯亮。

wKgaomYo0nmAV5fKAAAO3BO961I43.webp

图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所示。

wKgZomYo0nqAIfSFAAB_HHCAVEk43.webp

图19 指示灯控制的代码

4、下载测试

连接CWDAPLINK至目标核心板,并给核心板插入USB线供电,电源指示灯LED1红灯亮起,代表板子电源供电正常。请注意,此时LED2是熄灭状态,如图20所示。

wKgaomYo0nqAFUy-AAA7TMAlhak71.webp

图20 实物连接图

在MDK工程中,配置下载器为DAP类型的调试工具,如图21所示。

wKgaomYo0nqALMQTAACAsOOLtNQ97.webp

图21 下载器选项配置

5、下载并运行程序

下载程序完成后,按SW1红色复位键先进行复位,以确保程序的可靠运行。复位运行后,可以看到:核心板上面的电源指示灯LED1红灯仍然常亮,下面的LED2蓝灯受程序控制,已经被点亮,如图22所示。

wKgZomYo0nuAE1r1AAB3_IU9OX448.webp

图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反转
    }      
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CW32
    +关注

    关注

    1

    文章

    203

    浏览量

    623
收藏 人收藏

    评论

    相关推荐

    CW32移植Free-RTOS】CW32开发者扶持计划

    CW32配置Free-RTOS全过程,CW32开发者扶持计划
    的头像 发表于 04-18 09:38 6134次阅读
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b><b class='flag-5'>开发</b>者扶持计划

    小白从0学习CW32的第一天(搭建软件开发环境)

    小白从0学习CW32的第一天(搭建软件开发环境)
    的头像 发表于 05-26 14:34 2046次阅读
    小白从0学习<b class='flag-5'>CW32</b>的第一天(搭建软件<b class='flag-5'>开发</b>环境)

    CW32饭盒派开发板 测试IO速度

    CW32饭盒派开发板的GPIO进行速度测试
    的头像 发表于 05-26 13:07 42.5w次阅读
    <b class='flag-5'>CW32</b>饭盒派<b class='flag-5'>开发</b>板 测试IO速度

    CW32饭盒派开发板试用体验】串口实验

    CW32饭盒派开发板实现串口接收并控制LED
    的头像 发表于 05-29 09:13 41.9w次阅读
    【<b class='flag-5'>CW32</b>饭盒派<b class='flag-5'>开发</b>板试用体验】串口实验

    CW32开发者扶持计划#CW32 #芯片

    CW32
    CW32生态社区
    发布于 :2023年05月24日 16:56:14

    CW32 MCU开发资料汇总(手册、工具、固件库)

    32L083_StdPeriph_Lib.zip4、CW32 MCU开发工具:*附件:CW-DAPLINK调试器驱动.zip*附件:CW-DAPLINK使用手册.pdf*附件:
    发表于 07-27 14:47

    CW32饭盒派开发板试用体验】+初识CW32饭盒派开发

    盼星星,盼月亮,终于收到了CW32饭盒派开发板。回想起那天答复参加活动邮件发出去的那一刻,就在期盼。 以前也了解过CW32单片机,这是一款非常优秀的32位单片机。外部资源也丰富。这回的CW32
    发表于 05-29 15:51

    CW32饭盒派开发板温湿度采集

    CW32饭盒派开发板采集温湿数据并用LCD显示
    的头像 发表于 05-26 19:20 1483次阅读
    <b class='flag-5'>CW32</b>饭盒派<b class='flag-5'>开发</b>板温湿度采集

    cw32和stm32的区别

    cw32和stm32的区别 CW32和STM32是两种常见的单片机,被广泛应用于各种电子设备中。在本文中,我们将深入探讨CW32和STM32之间的区别和优劣势。 1. 硬件性能 硬件性能是衡量单片机
    的头像 发表于 08-16 11:15 4159次阅读

    cw32和gd32的区别

    cw32和gd32的区别 CW32和GD32是两种不同的芯片系列,分别由WCH和GigaDevice公司推出,两者有很多不同之处,下面我们来详细介绍。 首先从CW32系列开始,CW32
    的头像 发表于 08-16 11:15 1954次阅读

    基于CW32热敏电阻采集温度应用

    基于CW32热敏电阻采集温度应用
    的头像 发表于 10-25 16:45 533次阅读
    基于<b class='flag-5'>CW32</b>热敏电阻采集温度应用

    CW32 PWM输出功能介绍

    CW32 PWM输出功能介绍
    的头像 发表于 09-27 16:12 816次阅读
    <b class='flag-5'>CW32</b> PWM输出功能介绍

    CW32实时时钟(RTC)介绍

    CW32实时时钟(RTC)介绍
    的头像 发表于 10-24 15:36 1130次阅读
    <b class='flag-5'>CW32</b>实时时钟(RTC)介绍

    基于CW32的物联网应用

    CW32】基于CW32的物联网应用
    的头像 发表于 11-02 15:55 773次阅读
    基于<b class='flag-5'>CW32</b>的物联网应用

    基于CW32的遥控循迹小车

    本实验是使用CW32单片机制作一个入门的遥控循迹小车。遥控采用蓝牙配合手机APP进行遥控。循迹使用一个5路的循迹模块。使用OLED模块进行显示当前小车状态。
    的头像 发表于 11-17 17:46 1014次阅读
    基于<b class='flag-5'>CW32</b>的遥控循迹小车