不知不觉,拿到开发板快一个月了,正所谓万事开头难,发完开箱贴后,继续来吃这块“螃蟹”。关于大联大的这块开发板,在NXP的官网有详细的介绍资源,主要介绍如何入手K32W061的基本指南,网站可切换多种语言,但视频内容与参考的数据手册全是英文,需要我们细细阅读。当然这也是很正常的,我们要习惯阅读英文资料。快速入门指南网址:https://www.nxp.com.cn/document/guide/getting-started-with-the-k32w061:GS-K32W061
         正如上述网址,我们拿到开发板后,搭建开发环境需要完成三步:
①、下载关于这块开发板的MCUXpresso SDK
②、安装工具链,即MCUXpresso IDE
③、安装Python 3.8
       接下来,我们按部就班得进行环境搭建,首先我们通过快速入门网址,获得下载MCUXpresso SDK的入口地址,点击“获取MCUXpresso SDK”按钮,提示您必须登录个人账号,因此必须注册基于NXP官网的个人账号,然后才能获取。
下载组件.png
          登录后跳转到上图界面,我们选择需要开发使用的功能组件,勾选好后点击“Download SDK”按钮,即可跳转到下载SDK界面,点击“Download SDK Archive”,即可完成SDK包的下载。
下载K32W061的SDK.png
          下载完成后,将其解压出来,然后找到Flash编程器安装程序,目录在“tools\JN-SW-4401-DK6-Flash-Programmer”下,双击打开并安装到指定路径,然后将这个路径添加到windows的系统环境变量中。
安装DK6.png
添加环境变量.png
        然后进行MCUXpresso IDE的下载,链接一般会提供最新版的MCUXpresso IDE。安装完成后,启动工具,将之前下载好的SDK压缩包文件直接拖放到IDE的log输出窗口处,加载K32W061 SDK包。
加载SDK.png
         然后在左边栏,导入K32W061 SDK工程文件
导入SDK工程文件.png
          选择将要从SDK工程包中获取相应的功能项目,加载到MCUXpresso IDE中,此时会将整个工程拷贝到默认的工作路径中(C:\Users\tongxin\Documents\MCUXpressoIDE_11.4.0_6237\workspace\k32w061dk6_led_blinky),当然该工作路径是可以在MCUXpresso IDE中进行修改的。
选择工程.png
         而后点击“锤子”图标进行编译,编译完成后,error是没有,但warning就有56个,不知道问题出在哪里,按照log提示,大概的意思是数组越界了,但从入门指南网址的视频教程中,官方编译出的结果是没有error,没有warning。
编译完报56处警告.png
       不知道有没有网友跟我一样,碰到相同的问题,暂且就不更新该工程编译出的hex文件,不过演示Zigbee功能,一块K32W061开发板似乎是不太现实的,因此转而加载一个点灯的例程。
     我们从电路原理图获悉,板上的两颗LED灯与MCU通过GPIO0与GPIO1相连接。
LED原理图.png
与MCU连接的管脚.png
         USB连接好开发板,然后在主函数中修改源码,如需串口打印,需要包含{#include "fsl_debug_console.h"}头文件,然后使用“PRINTF()”封装好的函数进行打印。这里需要注意的是,如果下载完程序后,然后打开“串口调试助手”,接着再进行调试、下载程序时,记得必须先关闭串口调试助手,否则会下载失败,因为板上的串口被“串口调试助手”所占用。代码修改如下:
  1. #include "board.h"
  2. #include "fsl_gpio.h"
  3. #include "pin_mux.h"
  4. #include <stdbool.h>
  5. #include "fsl_debug_console.h"
  6. /*******************************************************************************
  7. * Definitions
  8. ******************************************************************************/
  9. #define DEMO_USART USART0
  10. #define DEMO_USART_CLK_SRC kCLOCK_Fro32M
  11. /* Can't use GREEN LED as conflicts with SW2 usage */
  12. #define BOARD_LED_PORT BOARD_LED_RED1_GPIO_PORT
  13. #define BOARD_LED_PIN BOARD_LED_RED1_GPIO_PIN
  14. /*******************************************************************************
  15. * Variables
  16. ******************************************************************************/
  17. volatile uint32_t g_systickCounter;
  18. /*******************************************************************************
  19. * Code
  20. ******************************************************************************/
  21. void SysTick_Handler(void)
  22. {
  23.     if (g_systickCounter != 0U)
  24.     {
  25.         g_systickCounter--;
  26.     }
  27. }
  28. void SysTick_DelayTicks(uint32_t n)
  29. {
  30.     g_systickCounter = n;
  31.     while (g_systickCounter != 0U)
  32.     {
  33.     }
  34. }
  35. /*!
  36. * @brief Main function
  37. */
  38. int main(void)
  39. {
  40.     /* Define the init structure for the output LED pin*/
  41.     gpio_pin_config_t led_config = {
  42.         kGPIO_DigitalOutput,
  43.         0,
  44.     };
  45.     /* Board pin init */
  46.     /* Security code to allow debug access */
  47.     SYSCON->CODESECURITYPROT = 0x87654320;
  48.     /* reset FLEXCOMM for USART */
  49.     RESET_PeripheralReset(kFC0_RST_SHIFT_RSTn);
  50.     RESET_PeripheralReset(kGPIO0_RST_SHIFT_RSTn);
  51.     BOARD_BootClockRUN();
  52.     BOARD_InitDebugConsole();
  53.     BOARD_InitPins();
  54.     /* Init output LED GPIO. */
  55.     GPIO_PortInit(GPIO, BOARD_LED_PORT);
  56.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN, &led_config);
  57.     /* Set systick reload value to generate 1ms interrupt */
  58.     if (SysTick_Config(SystemCoreClock / 1000U))
  59.     {
  60.         while (1)
  61.         {
  62.         }
  63.     }
  64.     while (1)
  65.     {
  66.         PRINTF("This is led_blinky project\n");
  67.         SysTick_DelayTicks(100U);
  68.         GPIO_PortSet(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN);
  69.         SysTick_DelayTicks(100U);
  70.         GPIO_PortClear(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN);
  71.         SysTick_DelayTicks(100U);
  72.         GPIO_PortSet(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN);
  73.         SysTick_DelayTicks(100U);
  74.         GPIO_PortClear(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN);
  75.         SysTick_DelayTicks(1000U);
  76.     }
  77. }
         在命令终端窗口,进入到“C:\Users\tongxin\Documents\MCUXpressoIDE_11.4.0_6237\workspace\k32w061dk6_led_blinky\Debug”目录下,执行“DK6Programmer -l”查看当前存在的串口号,接着擦去板上的闪存,通过指令“DK6Programmer.exe -V5 -s COM8 -P 1000000 -p FLASH@0x00=”+“工程编译后生成的hex文件的路径”,这里可以将Debug文件夹下的hex文件直接拖至“DK6Programmer.exe -V5 -s COM8 -P 1000000 -p FLASH@0x00=”指令后面,然后回车,接着再输入“Y”。
更新程序.png
       程序下载完成后,开发板会自动重新加载新程序,此时红色指示灯如同充电状态般闪烁。
闪灯.gif
         此次分享就暂且结尾了,调试中还存在不少疑惑,比方说如果操控LED1(绿灯),红灯会不受控制,一直是被点亮,而且是亮度很弱,工程中说是与button相连接的影响。体验下来,感觉工程代码的调试与下载还是比较方便的,使用命令窗口下载程序,按一下“↑”键即可召回原来的指令,下载速度也快。最后附上电路原理图与参考手册,咱们后会有期
SCH_P21-005_Super_Dongle_V1.1_20210312.pdf (622.77 KB, 下载次数: 2)
举报
内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
请点击举报理由
关闭 站长推荐上一条 /2 下一条
  • 返回顶部