平头哥CDK W806-KIT单片机技术交流组
直播中

HonestQiao

8年用户 545经验值
擅长:嵌入式技术
私信 关注
[经验]

【联盛德W806-KIT开发板试用体验】使用官方SDK,并点亮所有GPIO端口

1638247711526699

拿到板子,编译烧录烧录官方sdk中的的gpio demo,能够点亮板载的三个LED。
下面,我们使用官方的sdk,来点亮所有的GPIO端口,以便进行检测。

如果是没有排针的板子,请先自行焊接:
29931638247383_.pic.jpg

首先,下载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中,并覆盖已经存在的文件。

通过查看开发板的引脚图:
2.png
我们得知,可以自由使用的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. 端口定义:
  1. static void GPIO_Init(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStruct = {0};
  4.        
  5.         __HAL_RCC_GPIO_CLK_ENABLE();

  6.         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;
  7.         GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
  8.         GPIO_InitStruct.Pull = GPIO_NOPULL;
  9.         HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  10.         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);

  11.         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;
  12.         GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
  13.         GPIO_InitStruct.Pull = GPIO_NOPULL;
  14.         HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  15.         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);

  16.        
  17.         GPIO_InitStruct.Pin = GPIO_PIN_5;
  18.         GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  19.         GPIO_InitStruct.Pull = GPIO_PULLUP;
  20.         HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  21.        
  22.         HAL_NVIC_SetPriority(GPIOB_IRQn, 0);
  23.         HAL_NVIC_EnableIRQ(GPIOB_IRQn);

  24. }


2. 点亮GPIO端口:
  1. int main(void)
  2. {
  3.         SystemClock_Config(CPU_CLK_160M);
  4.         printf("enter mainrn");
  5.         HAL_Init();
  6.         GPIO_Init();
  7.        
  8.         while (1)
  9.         {

  10.                 HAL_Delay(500);
  11.                 key_flag++;
  12.                
  13.                 if(key_flag%3==0)
  14.                 {
  15.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,0);
  16.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,1);
  17.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,1);
  18.                        
  19.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,1);
  20.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,1);
  21.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,1);
  22.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,1);
  23.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,1);
  24.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,1);
  25.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,1);
  26.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,1);
  27.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,1);
  28.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,1);
  29.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,1);
  30.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,1);
  31.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,1);
  32.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,1);
  33.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,1);
  34.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,1);
  35.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,1);
  36.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,1);
  37.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,1);
  38.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,1);
  39.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,1);
  40.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,1);
  41.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,1);
  42.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,1);
  43.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,1);
  44.                        
  45.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,1);
  46.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,1);
  47.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,1);
  48.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,1);
  49.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,1);
  50.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,1);
  51.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,1);
  52.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,1);
  53.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,1);
  54.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,1);
  55.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,1);
  56.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,1);
  57.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,1);
  58.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,1);
  59.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,1);
  60.                 }
  61.                 else if(key_flag%3==1)
  62.                 {
  63.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,1);
  64.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,0);
  65.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,1);
  66.                
  67.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,1);
  68.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,1);
  69.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,1);
  70.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,1);
  71.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,1);
  72.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,1);
  73.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,1);
  74.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,1);
  75.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,1);
  76.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,1);
  77.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,1);
  78.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,1);
  79.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,1);
  80.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,1);
  81.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,1);
  82.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,1);
  83.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,1);
  84.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,1);
  85.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,1);
  86.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,1);
  87.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,1);
  88.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,1);
  89.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,1);
  90.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,1);
  91.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,1);
  92.                        
  93.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,1);
  94.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,1);
  95.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,1);
  96.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,1);
  97.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,1);
  98.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,1);
  99.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,1);
  100.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,1);
  101.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,1);
  102.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,1);
  103.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,1);
  104.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,1);
  105.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,1);
  106.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,1);
  107.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,1);
  108.                 }
  109.                 else
  110.                 {

  111.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,1);
  112.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1,1);
  113.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2,0);
  114.                        
  115.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3,0);
  116.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,0);
  117.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,0);
  118.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6,0);
  119.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,0);
  120.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,0);
  121.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,0);
  122.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,0);
  123.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,0);
  124.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,0);
  125.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13,0);
  126.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14,0);
  127.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15,0);
  128.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16,0);
  129.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17,0);
  130.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18,0);
  131.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19,0);
  132.                         //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20,0);
  133.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21,0);
  134.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22,0);
  135.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23,0);
  136.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24,0);
  137.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25,0);
  138.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26,0);
  139.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27,0);
  140.                        
  141.                        
  142.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,0);
  143.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2,0);
  144.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3,0);
  145.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,0);
  146.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,0);
  147.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,0);
  148.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7,0);
  149.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8,0);
  150.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,0);
  151.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,0);
  152.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11,0);
  153.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,0);
  154.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13,0);
  155.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14,0);
  156.                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15,0);
  157.                 }

  158.                
  159.         }
  160.        
  161.     return 0;
  162. }


修改好以后,按照下图进行编译:
iShot2021-11-30 12.36.36.png

编译完成,再使用下载的W800串口烧录工具_V1.4.8进行下载:
iShot2021-11-30 12.36.51.png
下载过程中,需要根据提示Waiting for restarting device...,按RST按键

下载完成后,再次按RST按键,进行重启。
重启运行,板载的三个LED会交替闪亮。
29941638247384_.pic.jpg

此时,就可以使用LED进行测试了。将LED依次接到:PA1-PA15、PB0-PB4、PB6-PB18、PB21-PB27,即可点亮LED,并跟着板载LED闪亮了:
29951638247704_.pic.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分