微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310 NVS 问题

CC1310 NVS 问题

时间:12-23 整理:3721RD 点击:

在 SmartRF06评估板上怎么在rfWsnConcentrator_CC1310DK_7XD_TI_CC1310F128例程上应用NVS程序?

/* * Copyright (c) 2015-2016, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * ======== empty.c ======== */ #include <strings.h> /* XDCtools Header files */ #include <xdc/std.h> #include <xdc/runtime/System.h> /* BIOS Header files */ #include <ti/sysbios/BIOS.h> #include <ti/sysbios/knl/Clock.h> #include <ti/sysbios/knl/Task.h> /* TI-RTOS Header files */ // #include <ti/drivers/I2C.h> #include <ti/drivers/PIN.h> // #include <ti/drivers/SPI.h> // #include <ti/drivers/UART.h> // #include <ti/drivers/Watchdog.h> #include <ti/drivers/NVS.h> #include <driverlib/flash.h> /* Board Header files */ #include "Board.h" #define TASKSTACKSIZE 512 Task_Struct task0Struct; Char task0Stack[TASKSTACKSIZE]; /* Pin driver handle */ static PIN_Handle ledPinHandle; static PIN_State ledPinState; /* * Application LED pin configuration table: * - All LEDs board LEDs are off. */ PIN_Config ledPinTable[] = { Board_LED0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, PIN_TERMINATE }; /* * ======== heartBeatFxn ======== * Toggle the Board_LED0. The Task_sleep is determined by arg0 which * is configured for the heartBeat Task instance. */ Void heartBeatFxn(UArg arg0, UArg arg1) { while (1) { Task_sleep((UInt)arg0); PIN_setOutputValue(ledPinHandle, Board_LED0, !PIN_getOutputValue(Board_LED0)); } } #define MYBUFFERSIZE 128 /* * ======== main ======== */ int main(void) { Task_Params taskParams; NVS_Handle nvsHandle; char buffer[MYBUFFERSIZE]; int status; unsigned int strSize; /* Call board init functions */ Board_initGeneral(); // Board_initI2C(); // Board_initSPI(); // Board_initUART(); // Board_initWatchdog(); /* Construct heartBeat Task thread */ Task_Params_init(&taskParams); taskParams.arg0 = 1000000 / Clock_tickPeriod; taskParams.stackSize = TASKSTACKSIZE; taskParams.stack = &task0Stack; Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL); /* Confirming the sector size on this device is 4096 */ if (FlashSectorSizeGet() != 4096) { System_abort("Oops! The sector size is not 4096"); } NVS_init(); nvsHandle = NVS_open(CC1310DK_7XD_NVS1F000, NULL); /* + 1 to make sure to write the '\0' character */ strSize = strlen("bar1") + 1; /* make sure the buffer size is a multiple of 4 */ strSize = (strSize + 4) & 0xFFFFFFFFC; status = NVS_write(nvsHandle, 0, "bar1", strSize, NVS_WRITE_ERASE | NVS_WRITE_VALIDATE); if (status != NVS_SOK) { System_abort("NVS_write failed"); } status = NVS_read(nvsHandle, 0, buffer, MYBUFFERSIZE); if (status != NVS_SOK) { System_abort("NVS_read failed"); } status = strcmp("bar1", buffer); if (status != 0) { System_abort("comparison failed"); } /* Open LED pins */ ledPinHandle = PIN_open(&ledPinState, ledPinTable); if(!ledPinHandle) { System_abort("Error initializing board LED pins\n"); } PIN_setOutputValue(ledPinHandle, Board_LED1, 1); System_printf("Starting the example\nSystem provider is set to SysMin. " "Halt the target to view any SysMin contents in ROV.\n"); /* SysMin will only print to the console when you call flush or exit */ System_flush(); /* Start BIOS */ BIOS_start(); return (0); }

您也可以参考E2E上的链接

https://e2e.ti.com/support/embedded/tirtos/f/355/t/528113

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top