func_ram_record.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.c
  5. * @brief : Main program body
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include <stdint.h>
  22. #include <string.h>
  23. #include <stdlib.h>
  24. #include <stdbool.h>
  25. #include "cmsis_os.h"
  26. #include "main.h"
  27. #if USE_RAM_RECORD==1
  28. #include "Data_deal.h"
  29. /* Private includes ----------------------------------------------------------*/
  30. #include "lib_ringbuf.h"
  31. #include "func_ram_record.h"
  32. /* Private typedef -----------------------------------------------------------*/
  33. /* Private define ------------------------------------------------------------*/
  34. /* Private macro -------------------------------------------------------------*/
  35. /* Private variables ---------------------------------------------------------*/
  36. uint8_t ram_record_buf[DATA_UNIT_NUM][DATA_UNIT_SIZE] = {0};
  37. RingBufOBJ ram_record_obj = {0};
  38. RingBuf ram_record_handle = {0};
  39. /* Private function prototypes -----------------------------------------------*/
  40. /* Private user code ---------------------------------------------------------*/
  41. /**
  42. * @brief Ö¸¶¨³¤¶Èlen,bufÄÚÈÝдÈëÎļþ
  43. * @retval int
  44. */
  45. uint32_t func_ram_record_write(uint8_t *buf ,uint32_t len)
  46. {
  47. uint32_t data_len = RingBuf_Push(ram_record_handle, (void *)buf, (int) len);
  48. return data_len;
  49. }
  50. /**
  51. * @brief The application entry point.
  52. * @retval int
  53. */
  54. uint32_t func_ram_record_read(uint8_t *buf, uint32_t len)
  55. {
  56. uint32_t data_len = RingBuf_Peek(ram_record_handle, (void *)buf, (int) len);
  57. return data_len;
  58. }
  59. uint32_t func_ram_record_delete(uint8_t *buf,uint32_t len)
  60. {
  61. uint32_t read_len = RingBuf_Pop(ram_record_handle, (void *)buf, (int) len);
  62. return read_len;
  63. }
  64. uint32_t func_ram_obj_num(uint32_t obj_size)
  65. {
  66. uint32_t read_len = RingBuf_obj_num(ram_record_handle, (int) obj_size);
  67. return read_len;
  68. }
  69. void func_ram_record_init(void)
  70. {
  71. ram_record_handle = RingBuf_Init(&ram_record_obj, ram_record_buf, sizeof(ram_record_buf));
  72. }
  73. typedef struct record_test_object
  74. {
  75. uint32_t cnts;
  76. uint8_t test_flag;
  77. char buf[32];
  78. }record_ram_OBJ;
  79. record_ram_OBJ record_ram_obj;
  80. void func_ram_record_test(void)
  81. {
  82. record_ram_obj.cnts++;
  83. sprintf(record_ram_obj.buf,"XX%08xXX",record_ram_obj.cnts);
  84. switch(record_ram_obj.test_flag)
  85. {
  86. case 0:
  87. {
  88. func_ram_record_write((uint8_t *)record_ram_obj.buf ,strlen(record_ram_obj.buf));
  89. }break;
  90. case 1:
  91. {
  92. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  93. func_ram_record_delete((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  94. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  95. }break;
  96. default:
  97. {
  98. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  99. }break;
  100. }
  101. }
  102. void func_ram_record_main(void const *argument)
  103. {
  104. osDelay(1000);//
  105. func_ram_record_init();
  106. while(1)
  107. {
  108. func_ram_record_test();
  109. osDelay(1000);
  110. }
  111. }
  112. #endif //------------------------USE_RAM_RECORD----------------------------
  113. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/