# 一、资料软件准备工作
### 1.1 硬件准备
W806开发板、USB转串口线
### 1.2 软件准备
1. Windows端的编译软件:CDK
链接:https://pan.baidu.com/s/1mslRbcuC0oGrNsjQJY3wHQ
提取码:qdut
2. 烧录工具:W800 Upgrade Tools.exe
[www.winnermicro.com](http://www.winnermicro.com)
3. 工程文件:SDK
[www.winnermicro.com](http://www.winnermicro.com)
$\textcolor{red}{注意:SDK存放的路径不要有中文,否则用CDK软件打开时会出现报错。} $
# 二、安装CDK并进行烧录
### 2.1 CDK的安装按照安装中的提示一步步进行即可
### 2.2 装好CDK后打开SDK目录下的示例文件,具体如下:
WM_SDK_W806\tools\W806\projects\SDK_Project\project\CDK_WS\W806_SDK
![image-20211213173729160](https://s2.loli.net/2021/12/13/4v3JC5nDdl7fhOR.png)
双击打开W806_SDK.cdkproj,右键选择其进行编译。
![image-20211213173822502](https://s2.loli.net/2021/12/13/F3qeVXpAuh2R8sw.png)
编译成功后生成.fls文件。
![image-20211213174019894](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174019894.png)
在目录下找到.fls文件,如下所示:
![image-20211213174123560](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174123560.png)
找到.fls文件后打开Upgrate Tools.exe进行烧录(在此之前先确保开发板以连接到电脑)
![image-20211213174210089](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174210089.png)
先打开串口,然后选择之前.fls文件所在的路径,最后点击下载。
![image-20211213174229529](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174229529.png)
出现waiting for restarting device后按一下开发板上的RST_N按键。
![image-20211213174253711](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174253711.png)
此时显示烧录成功,再按一次RST_N按键观察效果。
![image-20211213174311236](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174311236.png)
可以看到串口有信息打印,证明环境搭建没有问题,可以进行程序的开发了。
# 三、实现流水灯
通过开发板的原理图可以查看到板上LED的端口。
![image-20211213174606117](C:/Users/23695/AppData/Roaming/Typora/typora-user-images/image-20211213174606117.png)
对代码进行修改:
```
#include <stdio.h>
#include "wm_hal.h"
void Error_Handler(void);
static void GPIO_Init(void);
static volatile uint8_t key_flag = 0;
int main(void)
{
SystemClock_Config(CPU_CLK_160M);
printf("enter main\r\n");
HAL_Init();
GPIO_Init();
while (1)
{
HAL_Delay(500);
key_flag++;
if(key_flag%3==0)//流水灯的实现
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,1);