ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
* 导师**视频**讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> 我们设计一个实验:定义一个变量,当按下按键时,把该变量写入NV中,然后又从NV中读取出来,如果写和读的数值一样,表示操作成功!由于使用了按键功能,我们把程序放在按键处理函数中: ``` 1.static void zclSampleSw_HandleKeys( byte shift, byte keys )   2.{    3.  UI_MainStateMachine(keys);   4.   5.  if(keys & HAL_KEY_SW_6)   6.  {   7.    uint8 readVal;   // 存储从NV读取到的数据 8.    static uint8 writeVal = 0;  // 要写入的变量 9.       10.    char readValStr[30];   11.    char writeValStr[30];   12.       13.    // init USER_NV_TEST   14.    osal_nv_item_init(USER_NV_TEST, 1, NULL); // 初始化只会生效一次 15.       16.    // write   17.   sprintf(writeValStr, "Write: %d", writeVal);// 写入数值字符串 18.    osal_nv_write( USER_NV_TEST, 0, 1, &writeVal ); // 写NV 19.       20.    writeVal++;  // 每次写入后变量加1 21.       22.    // read   23.    osal_nv_read( USER_NV_TEST, 0, 1, &readVal );  // 读NV 24.    sprintf(readValStr, "Read: %d", readVal); // 读取数值字符串 25.       26.    // lcd show   27.   HalLcdWriteString(writeValStr, HAL_LCD_LINE_1);// 显示写入值 28.   HalLcdWriteString(readValStr,  HAL_LCD_LINE_2);//显示读取值 29.       30. /* 除了显示到显示屏上面之外,把数据也显示到串口助手上! */ 31.   // uart show   32.   HalUARTWrite(HAL_UART_PORT_0, (uint8 *)writeValStr, osal_strlen(writeValStr));   33.    HalUARTWrite(HAL_UART_PORT_0, "\r\n", 2);   34.    HalUARTWrite(HAL_UART_PORT_0, (uint8 *)readValStr, osal_strlen(readValStr));   35.   HalUARTWrite(HAL_UART_PORT_0, "\r\n", 2);   36.       37.    // led indication   38.    HalLedSet(HAL_LED_1, HAL_LED_MODE_TOGGLE);  // 指示灯 39.  }   40.} ``` ### ## \*\* **仿真调试** 编译工程后将程序烧录到开发板中,通过USB线连接开发板和电脑,打开串口助手。当我们按下按键时,可以在显示屏和串口上看到写入NV的数据和读取回来的数据: ![](https://img.kancloud.cn/f3/42/f342befd0eb2997b3b741edb7eb090a2_832x654.png =600x)