在当前的 BLE 项目中,我首先初始化 UART 功能,然后初始化闪存。在这种情况下,UART 功能不工作。如果我禁用闪存功能,UART 工作正常。所以我无法在 time.it 上访问这两个都与内存问题有关?? 有人能澄清我吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
能不能有人能帮我解决同样的问题。
如果我在代码中初始化 UART 无法正常工作的两个文件、我希望在项目中同时使用 UART 和 NVS 闪存(片上)。
我正在使用片上闪存、因此无需使用 GPIO 引脚初始化闪存、只有 GPIO 用于 UART 初始化。
/* UART 初始化:*/
void Board_openUART (void)
{
UART_Params uartParams;
UART_PARAMS_INIT (uartParams);
uartParams.baudrate = 115200;
UART_Handle hUart = UART_OPEN (Board_UART、uartParams);
}
/* NVS 闪存初始化*/
void File_System_Int (void)
{
NVS_init();
NvsHandle = NVS_OPEN (CC2650_LAUNCHXL_NVS1F000、空);
/*+ 1以确保写入'\0'字符*/
strsize = strlen ("bar1")+ 1;
/*确保缓冲区大小是4的倍数*/
strsize =(strsize + 4)& 0xFFFFFFFFC;
}
提前感谢。
尊敬的 Alan:
感谢你的答复。
NVS 闪存和 UART 均可单独正常工作。 如果我同时使用这两种方法、则我不会在串行端口上获取任何数据、并且代码未运行。
在这里、NVS 和 UART 都是我在正常函数中使用的、而不是在任何任务函数中使用的。 如果我像这样使用、是否存在任何问题? 或者我必须在任务函数中同时使用这两者。
我仅使用 TI 工具 i.e;仅使用 CCS v6
您能告诉我在哪里可以找到此 NVS HWAttrs 板级配置文件吗?
提前感谢。
尊敬的 Alan:
我将在这里附加文件。
CC2650_LAUNCHXL.cmd文件内容、如下所示
尊敬的 Alan:
NVS 和 UART 均可单独工作。
当我们同时使用这两个模块时、会遇到一些问题。如果我隐藏 NVS 的代码、UART 工作正常。
在此、我附上了 NVS INIT 和 NVS HWAttrs、
1) NVS 初始化
void File_System_Int (void)
{
NVS_init();
nvsHandle = NVS_open (CC2650_LAUNCHXL_NVS1F000、NULL);
/*+ 1以确保写入'\0'字符*/
strsize = strlen ("bar1")+ 1;
/*确保缓冲区大小是4的倍数*/
strsize =(strsize + 4)& 0xFFFFFFFFC;
}
2) NVS HWAttrs
typedef 枚举 CC2650_LAUNCHXL_NVSBufName{
CC2650_LAUNCHXL_NVS1F000 = 0、
CC2650_LAUNCHXL_NVSCOUNT
}CC2650_LAUNCHXL_NVSBufName;
谢谢、
显示为 HWAttrs 的内容似乎是 NVS 区域索引的枚举,这些枚举将传递给 NVS_open()。
我也看不到在5287.CC2650_LAUNCHXL.c 文件中的任何位置定义的实际 NVS_HWAttrs 数组。
但是、假设您在某个位置定义了有效的 NVS_HWAttrs 和 NVS_Config 结构、则显示的一个 NVS 区域枚举名称"CC2650_LAUNCHXL_NVS1F000"会提示存在潜在问题。 NVS 驱动程序无法安全地使用从0x1f000开始的闪存的最后一页、因为该页的任何擦除操作都会擦除位于0x1ffa8位置的 CCFG 对象的内容。 这将导致在擦除操作之后(并且有可能在擦除操作期间)完全未定义的行为。 最后一个可安全使用的4K 闪存页从0x1e000开始。
Alan