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

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

3天内不再提示

CW32F003E4芯片入门学习:3.工程模板的创建(不使用例程或模板)

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2024-03-27 09:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.2.1.新建keil工程文件夹

创建一个文件夹为CW32_new_pro,注意避免出现中文路径和特殊符号

1.2.2.创建keil工程

打开keil,选择Project->New uVision Project,选择CW32_new_pro文件夹目录,输入项目名称,例子使用CW32_new_pro

1.2.3.选择芯片型号

芯片型号为CW32F003F4,如下:

1.2.4.选择CMSIS固件

1.2.5.复制CW32库文件和启动文件

复制CW32库文件和启动文件到CW32_new_pro

库文件路径:CW32F003_StandardPeripheralLib_V1.4Libraries,

启动文件路径:CW32F003_StandardPeripheralLib_V1.4IdeSupportMDKstartup_cw32f003.s

1.2.6.创建main.c

在keil中右键Source Group1(根据自己的group名称还选择),选择Add New Item toGroupxxx,创建main.c文件.

1.2.7.添加库文件和启动

在Groups,新建group取名为cw32_lib

选择cw32_lib,点击AddFiles,找到CW32_new_proLibrariessrc目录,把所有.c选中,点击Add->Close->OK,完成添加。

添加启动文件

1.2.8.添加头文件路径

1.2.9.选择编译器

1.2.10.main.c文件编写

示例如下:

#include "base_types.h"
#include "cw32f003.h"
#include "system_cw32f003.h"

int32_t main(void)
{

  CW_SYSCTRL- >AHBEN_f.GPIOC = 1U; // Open GPIOC Clk

  CW_GPIOC- >ANALOG_f.PIN0 = 0U; // Digital
  CW_GPIOC- >BRR_f.BRR0 = 1U;    // Reset PA00
  CW_GPIOC- >DIR_f.PIN0 = 0U;    // Output

  while (1)
  {
    CW_GPIOC- >TOG = bv0;//电平发名字卷
    FirmwareDelay(100000);
  }
}

1.2.11.编译

点击上图所示的编译选项,会出现下图所示的错误,原因是重复定义了。

打开cw32f003_systick.c文件将164行的 __weak void SysTick_Handler(void) 修改为 void SysTick_Handler(void)。 即可解决14点的错误

再次点击编译,无错误,完成工程创建。

可以看到0个错误,0个警告,至此,工程模板创建完成。

1.2.12 探讨1.2.11的编译报错原因:

CW32要用AC5编译器,用AC6编译会报错,可能是这样的错误,还有一堆的警告

KEIL从MDK5.37版本开始已经不集成AC5编译器了,想用最新版本有两个方法:
方法1: 最简单的方法是先安装5.36再安装最新版本,这样AC5可以自动集成到MDK中。
方法2: 安装最新版本后手动添加AC5编译器

安装完MDK后把ARMCC文件夹手动放到keil安装目录的ARM文件夹中

然后在keil中手动添加,选择刚刚添加的文件夹

如果不想折腾安装AC5编译器,可以对现有工程代码修改以适应AC6的编译规则

CW32的例程直接用AC6编译的话一般会报这个错误

AC6中__weak这个关键字不能被识别,改为__WEAK就好了(或如上删去),关键字的不同可以看这个图:

更多的关于MDK适配AC6的内容可以下载KEIL官方的文档进行查看
[https://developer.arm.com/documentation/kan298/latest/]
或者看ARM的AC6介绍,里面也有说明如何从AC5转向AC6
[https://developer.arm.com/documentation/100068/latest/]

1.2.13 补充:用AC6编译有中文的代码会报-Winvalid-source-encoding的警告

用AC6编译有中文的代码会报-Winvalid-source-encoding的警告

可以在下方如图位置填入-Wno-invalid-source-encoding 将该警告信息屏蔽

审核编辑 黄宇

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

    关注

    462

    文章

    53539

    浏览量

    459158
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18613

    浏览量

    387149
  • 工程模板
    +关注

    关注

    0

    文章

    11

    浏览量

    7048
  • CW32
    +关注

    关注

    1

    文章

    281

    浏览量

    1677
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32F003系列MCU有哪些优势?

    CW32F003系列MCU有哪些优势
    发表于 11-25 07:34

    CW32F003怎么配置主频?

    芯片型号是CW32F003 DEMOCODE默认是24M的,我在DEMO CODE的基础上修改之后,无法仿真了。 修改如下: RCC_HSI_Enable( RCC_HSIOSC_DIV1
    发表于 11-21 07:52

    请问CW32F003支持printf函数吗?

    CW32F003支持printf函数吗?
    发表于 11-21 07:48

    NucleiStudio基于一代蜂鸟E203的工程创建

    本团队本次分享内容为NucleiStudio基于一代蜂鸟E203的工程创建。 1.下载NucleiStudio; 2.启动IDE;——启动后会指定工作目录,选定后直接Lunch; 3.
    发表于 10-29 06:08

    【RA4M2-SENSOR】1、开箱+新建模板工程

    新建模板工程 3.1 新建工程 之前也有评测过瑞萨开发板,E2S的下载安装教程可参考我之前的文章 。 这里直接新建一个模板
    发表于 08-31 20:50

    K4F6E3S4HM-MGCJ LPDDR4数据手册

    三星 K4F6E3S4HM-MGCJ LPDDR4
    发表于 07-21 14:47 0次下载

    Allegro Skill工艺辅助之导入叠层模板

    在PCB设计中,导入叠层模板能够确保设计的标准化和规范化,避免因手动设置叠层参数而可能出现的错误不一致情况。
    的头像 发表于 07-10 17:10 2841次阅读
    Allegro Skill工艺辅助之导入叠层<b class='flag-5'>模板</b>

    (芯源半导体)32位 无线射频,超低功耗,通用高性能MCU,存储芯片 选型

    通用高性能系列 CW32A030C8T7 CW32F002F3U7 CW32F002F3P7 CW32F020F6U7 CW32F020K6
    发表于 07-09 17:11

    HarmonyOS5云服务技术分享--Serverless抽奖模板部署

    startRaffle) 结束抽奖回调函数(比如endRaffle) 记下函数名,后续配置要用到 3️⃣ ​​工程包准备​​ 下载官方提供的抽奖模板工程包 解压后重点检查portal
    发表于 05-22 20:25

    基于LockAI视觉识别模块:C++多模板匹配

    。 minLoc:最小值的位置。 maxLoc:最大值的位置。 mask:可选的掩码矩阵。 返回值:无。 3. 综合代码解析 3.1 流程图 3.2 代码解释 使用多模板匹配函数
    发表于 05-14 15:00

    基于LockAI视觉识别模块:C++多模板匹配

    模板匹配是一种在图像中同时寻找多个模板的技术。通过对每个模板逐一进行匹配,找到与输入图像最相似的区域,并标记出匹配度最高的结果。本实验提供了一个简单的多模板匹配案例,并将其封装为一个
    的头像 发表于 05-14 14:37 1336次阅读
    基于LockAI视觉识别模块:C++多<b class='flag-5'>模板</b>匹配

    基于LockAI视觉识别模块:C++模板匹配

    的掩码矩阵,用于指定要搜索的像素范围。 返回值: 无 3. 综合代码解析 3.1 流程图 3.2 代码解释 **模板匹配函数应用 ** double similarityThreshold
    发表于 05-13 14:40

    基于LockAI视觉识别模块:C++模板匹配

    模板匹配是一种在图像中寻找特定模式的技术。它通过滑动一个模板图像(较小的图像)在输入图像上进行比较,找到最相似的区域。本实验提供了一个简单的模板匹配案例,并将其封装为一个自定义函数performTemplateMatching,
    的头像 发表于 05-13 14:14 542次阅读
    基于LockAI视觉识别模块:C++<b class='flag-5'>模板</b>匹配

    如何快速创建用户自定义Board和App工程

    概述自HPM_SDKv1.7.0发布开始,在HPM_ENV中新增了user_template文件夹,以方便用户快速创建自定义的Board和App工程。user_template是用户模板工程
    的头像 发表于 02-08 13:38 1000次阅读
    如何快速<b class='flag-5'>创建</b>用户自定义Board和App<b class='flag-5'>工程</b>

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】00、开发板开箱与环境搭建

    RA4E2_Projects的文件夹来存放项目。 3.3 创建工程模板 请按下图顺序创建工程,我在这里将工程命名为Template。 错
    发表于 12-12 22:44