三、创建工程模板
创建完成的工程模板下载链接:
链接:https://pan.baidu.com/s/1PsBVHlFAajREFHa4PF1KxA?pwd=LCKF 提取码:LCKF
1. 前提条件
- 已经安装好KeilMDK软件
- 已经安装好CW32F030的Pack包
- 已经下载好CW32F030标准固件库
2. 新建工程目录
新建文件夹,命令为CW32F030C8T6_ProjectTemplate,用来保存新创建的工程。
然后在该文件夹下新建6个文件夹,分别命名为:
- Project: 存放工程文件。
- Libraries:存放各种库文件,CMSIS,芯片固件库,文件系统库等。
- Board:存放和板子初始化和链接文件。
- APP: 存放应用程序,由用户编写和放main函数。
- BSP:存放和底层相关的支持包。
- Module:主要存放各种软件模块等。
然后在Project文件夹下新建一个文件夹:MDK。
- 拷贝工程文件
找到我们的固件库的下载目录,将 CW32F030_StandardPeripheralLib_V2.1\Libraries 文件夹下的内容全部拷贝到新建目录的Libraries下。
找到 CW32F030_StandardPeripheralLib_V2.1\IdeSupport\MDK 下面的 startup_cw32f030.s复制到APP文件夹下
然后我们在APP文件夹下面新建一个文件 main.c
我们将下方链接中的两个文件下载并且解压,拖到 CW32F030C8T6_ProjectTemplate文件夹中替换。
链接:https://pan.baidu.com/s/1R9K4wK18JL9EYqfGLCnDCQ?pwd=LCKF 提取码:LCKF
4. 新建Keil工程
在project文件夹有一个MDK文件夹用来存放keil MDK的工程文件。 打开Keil uVision5创建一个新的工程: 单击->Project->New uVision Project ->选好芯片型号CW32F030C8。
5. 创建分组并添加源文件
右键Target->单击Manage Project Items 如下所示设计分组(双击可以修改名字):
将\CW32F030C8T6_ProjectTemplate\APP目录下的startup_cw32f030.s(启动文件)添加到STARTUP组里(注意最后要点击对话框左下角的OK按钮才能生效)启动文件使用汇编写的,他是上电或复位后执行的第一段代码:
- 设置堆栈大小和PC指针。
- 配置中断向量表:设置中断向量表的位置,这样当中断发生时,CPU能够找到相应的中断服务程序。
- 定义中断服务例程的默认处理函数:通常会定义一个默认的中断处理函数,当未定义特定的中断处理函数时,会调用这个默认函数。在某些启动文件中,都是了弱定义的中断处理函数,允许我们在其C代码中重定义。
- 系统时钟初始化。
- 跳转到c语言的main函数里面。
将\CW32F030C8T6_ProjectTemplate\Libraries\src目录下的 system_cw32f030.c 添加到APP组里面:
将\CW32F030C8T6_ProjectTemplate\Libraries\src目录下除了system_cw32f030.c文件其他都添加到Driver组里面:
添加\board目录下的board.c 文件到Board组中去。
添加\bsp\uart目录下的bsp_uart.c 文件到BSP组中。 添加README.md文件到DOC目录下去。(注意:文件类型一定要选择 All files 才可以看得到.md后缀的文件) 然后我们将APP里面的main.c 文件,添加到APP分组中。 ## 6. 添加头文件路径7. 配置工程
点击绿色小方块,然后我们勾选CORE!
点击魔法棒弹出页面
- 勾选 Create HEX File
- 使用微库
- C语言使用C99标准
8. 修改工程
我们打开cw32f030_systick.c文件,修改159行:将 __WEAK 去掉
修改前:
修改后: ## 9. 编译测试将main.c中的代码替换为:
/*
* 立创开发板软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:https://oshwhub.com/forum
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
* Change Logs:
* Date Author Notes
* 2024-06-12 LCKFB-LP first version
*/
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
int32_t main(void)
{
board_init(); // 开发板初始化
uart1_init(115200); // 串口1波特率115200
GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体
__RCC_GPIOC_CLK_ENABLE(); // 使能GPIO时钟
GPIO_InitStruct.Pins = GPIO_PIN_13; // GPIO引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 输出速度高
GPIO_Init(CW_GPIOC, &GPIO_InitStruct); // 初始化
while(1)
{
// 高电平
GPIO_WritePin(CW_GPIOC, GPIO_PIN_13, GPIO_Pin_SET);
printf("[SET]\r\n");
delay_ms(100);
// 低电平
GPIO_WritePin(CW_GPIOC, GPIO_PIN_13, GPIO_Pin_RESET);
printf("[RESET]\r\n");
delay_ms(100);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
我们点击编译
发现0错误,0警告,这样我们的工程模板就完成了!