nordic的flash存储功能,还有点啃,12版本sdk使用比较方便,后面换了14.2sdk 提供的接口没有了 使用官方sdk似乎有点问题 ,现在总结一下flash存储 基于14.2sdk 主要是存储之前,一定要擦除,并且等待存储完成 这样才能保证正常存储
//写入
void date_flash_storage(uint32_t to_address,char* p_buf)
{
ret_code_t ret;
//擦除
ret = nrf_fstorage_erase(
&fstorage, /* The instance to use. */
to_address, /* The address of the flash pages to erase. */
1, /* The number of pages to erase. */
NULL /* Optional parameter, backend-dependent. */
);
APP_ERROR_CHECK(ret);
ret = nrf_fstorage_write(&fstorage, to_address, p_buf, 12, NULL);
//等待存储完成
while(nrf_fstorage_is_busy(&fstorage))
{
(void) sd_app_evt_wait();
}
}
//读取
char* date_flash_read(uint32_t from_address)
{
ret_code_t ret;
memset(m_date_value,0,12) ;
ret = nrf_fstorage_read(&fstorage, from_address, m_date_value, 12);
//send_uart_string(m_date_value,10) ;
return m_date_value ;
}
其中 from_address , to_address 调用的时候传参,保持一致即可
比如:
date_flash_storage(0x73000,"hello") ;
send_uart_string(date_flash_read(0x73000),12) ;