拿到板子,编译烧录烧录官方sdk中的的gpio demo,能够点亮板载的三个LED。
下面,我们使用官方的sdk,来点亮所有的GPIO端口,以便进行检测。
如果是没有排针的板子,请先自行焊接:
首先,下载SDK:
https://h.hlktech.com/Mobile/download/fdetail/143.html
需要下载的文件为:WM_SDK_W806(.rar)、W800串口烧录工具_V1.4.8(.rar)
然后,将WM_SDK_W806.rar解压,将WM_SDK_W806/demo/gpio/中的文件,拷贝到WM_SDK_W806/app/src中,并覆盖已经存在的文件。
通过查看
开发板的引脚图:
我们得知,可以自由使用的GPIO端口:
PA1-PA15、PB0-PB18、PB21-PB27
PB0被用于BOOT,PB19、PB20被用于串口0
在gpio demo中,PB5用于输入测试,所以GPIO输出测试,也排除PB5。
通过以上了解,我们可以修改程序:
首先打开:WM_SDK_W806/tools/W806/projects/SDK_Project/project/CDK_WS/CDK_WS.cdkws 然后修改app/src/main.c文件:
1. 端口定义:
- static void GPIO_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct = {0};
-
- __HAL_RCC_GPIO_CLK_ENABLE();
- GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_16| GPIO_PIN_17 | GPIO_PIN_18 | GPIO_PIN_21 | GPIO_PIN_22 | GPIO_PIN_23 | GPIO_PIN_24 | GPIO_PIN_25 | GPIO_PIN_26 | GPIO_PIN_27;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_16| GPIO_PIN_17 | GPIO_PIN_18 | GPIO_PIN_21 | GPIO_PIN_22 | GPIO_PIN_23 | GPIO_PIN_24 | GPIO_PIN_25 | GPIO_PIN_26 | GPIO_PIN_27, GPIO_PIN_SET);
- GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_SET);
-
- GPIO_InitStruct.Pin = GPIO_PIN_5;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
- HAL_NVIC_SetPriority(GPIOB_IRQn, 0);
- HAL_NVIC_EnableIRQ(GPIOB_IRQn);
- }
2. 点亮GPIO端口:
- int main(void)
- {
- SystemClock_Config(CPU_CLK_160M);
- printf("enter mainrn");
- HAL_Init();
- GPIO_Init();
-
- while (1)
- {
- HAL_Delay(500);
- key_flag++;
-
- if(key_flag%3==0)
- {
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,1);
-
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,1);
-
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,1);
- }
- else if(key_flag%3==1)
- {
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,1);
-
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,1);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,1);
-
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,1);
- }
- else
- {
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,1);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,0);
-
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,0);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,0);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,0);
- //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,0);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,0);
-
-
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,0);
- }
-
- }
-
- return 0;
- }
修改好以后,按照下图进行编译:
编译完成,再使用下载的W800串口烧录工具_V1.4.8进行下载:
下载过程中,需要根据提示Waiting for restarting device...,按RST按键
下载完成后,再次按RST按键,进行重启。
重启运行,板载的三个LED会交替闪亮。
此时,就可以使用LED进行测试了。将LED依次接到:PA1-PA15、PB0-PB4、PB6-PB18、PB21-PB27,即可点亮LED,并跟着板载LED闪亮了: