刘小飞
刘小飞
这家伙很懒,什么也没写!

注册于 4年前

回答
6
文章
2
关注者
0

发布于3年前

设备后面自动重启了,并且flash存储的内容全部没有了 ,下面是我的flash代码,底层用的ef4.1.0

  1. uint32_t Flash_Get(uint8_t id)
  2. {
  3. uint32_t Counter = 0;
  4. // char *Counter_Temp = rt_malloc(32);//申请临时buffer空间;
  5. char *Counter_Temp;
  6. Counter_Temp = strdup(ef_get_env((const char*)&Key_list[id]));
  7. if (Counter_Temp == RT_NULL)
  8. Counter_Temp[0] = '0';
  9. Counter = atol(Counter_Temp);
  10. rt_free(Counter_Temp);//释放临时buffer对应内存空间
  11. LOG_D("Reading From %s is %d\r\n", Key_list[id],Counter);
  12. return Counter;
  13. }
  14. void Flash_Set(uint8_t id,uint32_t value)
  15. {
  16. char * Counter_Temp;
  17. Counter_Temp = rt_malloc(32);
  18. snprintf(Counter_Temp, 32,"%ld", value);
  19. ef_set_env((const char*)&Key_list[id], Counter_Temp);
  20. ef_save_env();
  21. rt_free(Counter_Temp);
  22. LOG_D("Writing to %s is %d\r\n", Key_list[id],value);
  23. rt_thread_mdelay(10);
  24. }

发布于3年前

线程有电机,lcd,现象就是电机跑固定圈数,屏幕就只是白屏,不显示其他。看们狗没触发,其他线程都是ok的

发布于3年前

算是找到了,生成工程后必须把cubemx给关闭,不然就会遇到我的情况

发布于3年前

image.png
这里更改版本号进行更改判断

  1. static void kv_auto_update(fdb_kvdb_t db)//这个代码是自动更新的源码
  2. {
  3. size_t saved_ver_num, setting_ver_num = db->ver_num;
  4. if (get_kv(db, VER_NUM_KV_NAME, &saved_ver_num, sizeof(size_t), NULL) > 0) {
  5. /* check version number */
  6. if (saved_ver_num != setting_ver_num) {//判断是否更新
  7. struct fdb_kv kv;
  8. size_t i, value_len;
  9. struct kvdb_sec_info sector;
  10. FDB_DEBUG("Update the KV from version %u to %u.\n", saved_ver_num, setting_ver_num);
  11. for (i = 0; i < db->default_kvs.num; i++) {
  12. /* add a new KV when it's not found */
  13. if (!find_kv(db, db->default_kvs.kvs[i].key, &kv)) {
  14. /* It seems to be a string when value length is 0.
  15. * This mechanism is for compatibility with older versions (less then V4.0). */
  16. if (db->default_kvs.kvs[i].value_len == 0) {
  17. value_len = strlen(db->default_kvs.kvs[i].value);
  18. } else {
  19. value_len = db->default_kvs.kvs[i].value_len;
  20. }
  21. sector.empty_kv = FAILED_ADDR;
  22. create_kv_blob(db, §or, db->default_kvs.kvs[i].key, db->default_kvs.kvs[i].value, value_len);
  23. }
  24. }
  25. } else {
  26. /* version number not changed now return */
  27. return;
  28. }
  29. }
  30. set_kv(db, VER_NUM_KV_NAME, &setting_ver_num, sizeof(size_t));
  31. }

发布于4年前

作者大佬,能求一份源码吗,最近在学习柿饼

发布于4年前

我试过了 不是线程栈大小的原因 求大佬解决

回到
顶部

发布
问题

投诉
建议