func_ram_record.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. void func_ram_record_init(void)
  65. {
  66. ram_record_handle = RingBuf_Init(&ram_record_obj, ram_record_buf, sizeof(ram_record_buf));
  67. }
  68. typedef struct record_test_object
  69. {
  70. uint32_t cnts;
  71. uint8_t test_flag;
  72. char buf[32];
  73. }record_ram_OBJ;
  74. record_ram_OBJ record_ram_obj;
  75. void func_ram_record_test(void)
  76. {
  77. record_ram_obj.cnts++;
  78. sprintf(record_ram_obj.buf,"XX%08xXX",record_ram_obj.cnts);
  79. switch(record_ram_obj.test_flag)
  80. {
  81. case 0:
  82. {
  83. func_ram_record_write((uint8_t *)record_ram_obj.buf ,strlen(record_ram_obj.buf));
  84. }break;
  85. case 1:
  86. {
  87. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  88. func_ram_record_delete((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  89. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  90. }break;
  91. default:
  92. {
  93. func_ram_record_read ((uint8_t *)record_ram_obj.buf ,sizeof(record_ram_obj.buf));
  94. }break;
  95. }
  96. }
  97. void func_ram_record_main(void const *argument)
  98. {
  99. osDelay(1000);//
  100. func_ram_record_init();
  101. while(1)
  102. {
  103. func_ram_record_test();
  104. osDelay(1000);
  105. }
  106. }
  107. #endif //------------------------USE_RAM_RECORD----------------------------
  108. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/