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 将该警告信息屏蔽
审核编辑 黄宇
-
芯片
+关注
关注
455文章
50732浏览量
423270 -
mcu
+关注
关注
146文章
17135浏览量
351031 -
工程模板
+关注
关注
0文章
10浏览量
6858 -
CW32
+关注
关注
1文章
203浏览量
628
发布评论请先 登录
相关推荐
如何用VSCODE创建一个LE5010的工程模板
图纸模板中的文本变量

A0到A4的图框只要一个图纸模板就搞定了?

TPD4F003.TPD6F003.TPD8F003八通道EMI滤波器数据表

CW32数字电压电流表软件教程-实验四:数码管动态显示

STM32L4R5生成工程模板时,必须使用CubeMx,但是生成的程序编译极慢为什么?
CW32F003E4芯片入门学习:4.工程模板创建(使用例程或模板)

CW32F003E4芯片入门学习:2.器件包安装

CW32F003E4芯片入门学习:1.开发环境安装

使用Jenkins和单个模板部署多个Kubernetes组件

评论