训练营PLSR题目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

286 rivejä
12 KiB

  1. /*
  2. ************************************************************************************************************************
  3. * uC/OS-III
  4. * The Real-Time Kernel
  5. *
  6. * (c) Copyright 2009-2014; Micrium, Inc.; Weston, FL
  7. * All rights reserved. Protected by international copyright laws.
  8. *
  9. * OS CONFIGURATION (APPLICATION SPECIFICS)
  10. *
  11. * File : OS_CFG_APP.C
  12. * By : JJL
  13. * Version : V3.04.04
  14. *
  15. * LICENSING TERMS:
  16. * ---------------
  17. * uC/OS-III is provided in source form for FREE short-term evaluation, for educational use or
  18. * for peaceful research. If you plan or intend to use uC/OS-III in a commercial application/
  19. * product then, you need to contact Micrium to properly license uC/OS-III for its use in your
  20. * application/product. We provide ALL the source code for your convenience and to help you
  21. * experience uC/OS-III. The fact that the source is provided does NOT mean that you can use
  22. * it commercially without paying a licensing fee.
  23. *
  24. * Knowledge of the source code may NOT be used to develop a similar product.
  25. *
  26. * Please help us continue to provide the embedded community with the finest software available.
  27. * Your honesty is greatly appreciated.
  28. *
  29. * You can find our product's user manual, API reference, release notes and
  30. * more information at https://doc.micrium.com.
  31. * You can contact us at www.micrium.com.
  32. ************************************************************************************************************************
  33. * Note(s) : DO NOT CHANGE THIS FILE!
  34. ************************************************************************************************************************
  35. */
  36. #define MICRIUM_SOURCE
  37. #include <os_cfg_app.h>
  38. #include "os.h"
  39. #ifdef VSC_INCLUDE_SOURCE_FILE_NAMES
  40. const CPU_CHAR *os_cfg_app__c = "$Id: $";
  41. #endif
  42. #define OS_CFG_IDLE_TASK_STK_LIMIT ((OS_CFG_IDLE_TASK_STK_SIZE * OS_CFG_TASK_STK_LIMIT_PCT_EMPTY) / 100u)
  43. #define OS_CFG_INT_Q_TASK_STK_LIMIT ((OS_CFG_INT_Q_TASK_STK_SIZE * OS_CFG_TASK_STK_LIMIT_PCT_EMPTY) / 100u)
  44. #define OS_CFG_STAT_TASK_STK_LIMIT ((OS_CFG_STAT_TASK_STK_SIZE * OS_CFG_TASK_STK_LIMIT_PCT_EMPTY) / 100u)
  45. #define OS_CFG_TICK_TASK_STK_LIMIT ((OS_CFG_TICK_TASK_STK_SIZE * OS_CFG_TASK_STK_LIMIT_PCT_EMPTY) / 100u)
  46. #define OS_CFG_TMR_TASK_STK_LIMIT ((OS_CFG_TMR_TASK_STK_SIZE * OS_CFG_TASK_STK_LIMIT_PCT_EMPTY) / 100u)
  47. /*
  48. ************************************************************************************************************************
  49. * DATA STORAGE
  50. ************************************************************************************************************************
  51. */
  52. CPU_STK OSCfg_IdleTaskStk [OS_CFG_IDLE_TASK_STK_SIZE];
  53. #if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
  54. OS_INT_Q OSCfg_IntQ [OS_CFG_INT_Q_SIZE];
  55. CPU_STK OSCfg_IntQTaskStk [OS_CFG_INT_Q_TASK_STK_SIZE];
  56. #endif
  57. #if (OS_CFG_ISR_STK_SIZE > 0u)
  58. CPU_STK OSCfg_ISRStk [OS_CFG_ISR_STK_SIZE];
  59. #endif
  60. #if (OS_MSG_EN > 0u)
  61. OS_MSG OSCfg_MsgPool [OS_CFG_MSG_POOL_SIZE];
  62. #endif
  63. #if (OS_CFG_STAT_TASK_EN > 0u)
  64. CPU_STK OSCfg_StatTaskStk [OS_CFG_STAT_TASK_STK_SIZE];
  65. #endif
  66. CPU_STK OSCfg_TickTaskStk [OS_CFG_TICK_TASK_STK_SIZE];
  67. #if (OS_CFG_TMR_EN > 0u)
  68. CPU_STK OSCfg_TmrTaskStk [OS_CFG_TMR_TASK_STK_SIZE];
  69. #endif
  70. /*
  71. ************************************************************************************************************************
  72. * CONSTANTS
  73. ************************************************************************************************************************
  74. */
  75. CPU_STK * const OSCfg_IdleTaskStkBasePtr = (CPU_STK *)&OSCfg_IdleTaskStk[0];
  76. CPU_STK_SIZE const OSCfg_IdleTaskStkLimit = (CPU_STK_SIZE)OS_CFG_IDLE_TASK_STK_LIMIT;
  77. CPU_STK_SIZE const OSCfg_IdleTaskStkSize = (CPU_STK_SIZE)OS_CFG_IDLE_TASK_STK_SIZE;
  78. CPU_INT32U const OSCfg_IdleTaskStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_IdleTaskStk);
  79. #if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
  80. OS_INT_Q * const OSCfg_IntQBasePtr = (OS_INT_Q *)&OSCfg_IntQ[0];
  81. OS_OBJ_QTY const OSCfg_IntQSize = (OS_OBJ_QTY )OS_CFG_INT_Q_SIZE;
  82. CPU_INT32U const OSCfg_IntQSizeRAM = (CPU_INT32U )sizeof(OSCfg_IntQ);
  83. CPU_STK * const OSCfg_IntQTaskStkBasePtr = (CPU_STK *)&OSCfg_IntQTaskStk[0];
  84. CPU_STK_SIZE const OSCfg_IntQTaskStkLimit = (CPU_STK_SIZE)OS_CFG_INT_Q_TASK_STK_LIMIT;
  85. CPU_STK_SIZE const OSCfg_IntQTaskStkSize = (CPU_STK_SIZE)OS_CFG_INT_Q_TASK_STK_SIZE;
  86. CPU_INT32U const OSCfg_IntQTaskStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_IntQTaskStk);
  87. #else
  88. OS_INT_Q * const OSCfg_IntQBasePtr = (OS_INT_Q *)0;
  89. OS_OBJ_QTY const OSCfg_IntQSize = (OS_OBJ_QTY )0;
  90. CPU_INT32U const OSCfg_IntQSizeRAM = (CPU_INT32U )0;
  91. CPU_STK * const OSCfg_IntQTaskStkBasePtr = (CPU_STK *)0;
  92. CPU_STK_SIZE const OSCfg_IntQTaskStkLimit = (CPU_STK_SIZE)0;
  93. CPU_STK_SIZE const OSCfg_IntQTaskStkSize = (CPU_STK_SIZE)0;
  94. CPU_INT32U const OSCfg_IntQTaskStkSizeRAM = (CPU_INT32U )0;
  95. #endif
  96. #if (OS_CFG_ISR_STK_SIZE > 0u)
  97. CPU_STK * const OSCfg_ISRStkBasePtr = (CPU_STK *)&OSCfg_ISRStk[0];
  98. CPU_STK_SIZE const OSCfg_ISRStkSize = (CPU_STK_SIZE)OS_CFG_ISR_STK_SIZE;
  99. CPU_INT32U const OSCfg_ISRStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_ISRStk);
  100. #else
  101. CPU_STK * const OSCfg_ISRStkBasePtr = (CPU_STK *)0;
  102. CPU_STK_SIZE const OSCfg_ISRStkSize = (CPU_STK_SIZE)0;
  103. CPU_INT32U const OSCfg_ISRStkSizeRAM = (CPU_INT32U )0;
  104. #endif
  105. #if (OS_MSG_EN > 0u)
  106. OS_MSG_SIZE const OSCfg_MsgPoolSize = (OS_MSG_SIZE)OS_CFG_MSG_POOL_SIZE;
  107. CPU_INT32U const OSCfg_MsgPoolSizeRAM = (CPU_INT32U )sizeof(OSCfg_MsgPool);
  108. OS_MSG * const OSCfg_MsgPoolBasePtr = (OS_MSG *)&OSCfg_MsgPool[0];
  109. #else
  110. OS_MSG_SIZE const OSCfg_MsgPoolSize = (OS_MSG_SIZE)0;
  111. CPU_INT32U const OSCfg_MsgPoolSizeRAM = (CPU_INT32U )0;
  112. OS_MSG * const OSCfg_MsgPoolBasePtr = (OS_MSG *)0;
  113. #endif
  114. #if (OS_CFG_STAT_TASK_EN > 0u)
  115. OS_PRIO const OSCfg_StatTaskPrio = (OS_PRIO )OS_CFG_STAT_TASK_PRIO;
  116. OS_RATE_HZ const OSCfg_StatTaskRate_Hz = (OS_RATE_HZ )OS_CFG_STAT_TASK_RATE_HZ;
  117. CPU_STK * const OSCfg_StatTaskStkBasePtr = (CPU_STK *)&OSCfg_StatTaskStk[0];
  118. CPU_STK_SIZE const OSCfg_StatTaskStkLimit = (CPU_STK_SIZE)OS_CFG_STAT_TASK_STK_LIMIT;
  119. CPU_STK_SIZE const OSCfg_StatTaskStkSize = (CPU_STK_SIZE)OS_CFG_STAT_TASK_STK_SIZE;
  120. CPU_INT32U const OSCfg_StatTaskStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_StatTaskStk);
  121. #else
  122. OS_PRIO const OSCfg_StatTaskPrio = (OS_PRIO )0;
  123. OS_RATE_HZ const OSCfg_StatTaskRate_Hz = (OS_RATE_HZ )0;
  124. CPU_STK * const OSCfg_StatTaskStkBasePtr = (CPU_STK *)0;
  125. CPU_STK_SIZE const OSCfg_StatTaskStkLimit = (CPU_STK_SIZE)0;
  126. CPU_STK_SIZE const OSCfg_StatTaskStkSize = (CPU_STK_SIZE)0;
  127. CPU_INT32U const OSCfg_StatTaskStkSizeRAM = (CPU_INT32U )0;
  128. #endif
  129. CPU_STK_SIZE const OSCfg_StkSizeMin = (CPU_STK_SIZE)OS_CFG_STK_SIZE_MIN;
  130. OS_RATE_HZ const OSCfg_TickRate_Hz = (OS_RATE_HZ )OS_CFG_TICK_RATE_HZ;
  131. OS_PRIO const OSCfg_TickTaskPrio = (OS_PRIO )OS_CFG_TICK_TASK_PRIO;
  132. CPU_STK * const OSCfg_TickTaskStkBasePtr = (CPU_STK *)&OSCfg_TickTaskStk[0];
  133. CPU_STK_SIZE const OSCfg_TickTaskStkLimit = (CPU_STK_SIZE)OS_CFG_TICK_TASK_STK_LIMIT;
  134. CPU_STK_SIZE const OSCfg_TickTaskStkSize = (CPU_STK_SIZE)OS_CFG_TICK_TASK_STK_SIZE;
  135. CPU_INT32U const OSCfg_TickTaskStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_TickTaskStk);
  136. #if (OS_CFG_TMR_EN > 0u)
  137. OS_PRIO const OSCfg_TmrTaskPrio = (OS_PRIO )OS_CFG_TMR_TASK_PRIO;
  138. OS_RATE_HZ const OSCfg_TmrTaskRate_Hz = (OS_RATE_HZ )OS_CFG_TMR_TASK_RATE_HZ;
  139. CPU_STK * const OSCfg_TmrTaskStkBasePtr = (CPU_STK *)&OSCfg_TmrTaskStk[0];
  140. CPU_STK_SIZE const OSCfg_TmrTaskStkLimit = (CPU_STK_SIZE)OS_CFG_TMR_TASK_STK_LIMIT;
  141. CPU_STK_SIZE const OSCfg_TmrTaskStkSize = (CPU_STK_SIZE)OS_CFG_TMR_TASK_STK_SIZE;
  142. CPU_INT32U const OSCfg_TmrTaskStkSizeRAM = (CPU_INT32U )sizeof(OSCfg_TmrTaskStk);
  143. #else
  144. OS_PRIO const OSCfg_TmrTaskPrio = (OS_PRIO )0;
  145. OS_RATE_HZ const OSCfg_TmrTaskRate_Hz = (OS_RATE_HZ )0;
  146. CPU_STK * const OSCfg_TmrTaskStkBasePtr = (CPU_STK *)0;
  147. CPU_STK_SIZE const OSCfg_TmrTaskStkLimit = (CPU_STK_SIZE)0;
  148. CPU_STK_SIZE const OSCfg_TmrTaskStkSize = (CPU_STK_SIZE)0;
  149. CPU_INT32U const OSCfg_TmrTaskStkSizeRAM = (CPU_INT32U )0;
  150. #endif
  151. /*
  152. ************************************************************************************************************************
  153. * TOTAL SIZE OF APPLICATION CONFIGURATION
  154. ************************************************************************************************************************
  155. */
  156. CPU_INT32U const OSCfg_DataSizeRAM = sizeof(OSCfg_IdleTaskStk)
  157. #if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
  158. + sizeof(OSCfg_IntQ)
  159. + sizeof(OSCfg_IntQTaskStk)
  160. #endif
  161. #if (OS_MSG_EN > 0u)
  162. + sizeof(OSCfg_MsgPool)
  163. #endif
  164. #if (OS_CFG_STAT_TASK_EN > 0u)
  165. + sizeof(OSCfg_StatTaskStk)
  166. #endif
  167. #if (OS_CFG_TMR_EN > 0u)
  168. + sizeof(OSCfg_TmrTaskStk)
  169. #endif
  170. #if (OS_CFG_ISR_STK_SIZE > 0u)
  171. + sizeof(OSCfg_ISRStk)
  172. #endif
  173. + sizeof(OSCfg_TickTaskStk);
  174. /*
  175. ************************************************************************************************************************
  176. * OS CONFIGURATION INITIALIZATION
  177. *
  178. * Description: This function is used to make sure that debug variables that are unused in the application are not
  179. * optimized away. This function might not be necessary for all compilers. In this case, you should simply
  180. * DELETE the code in this function while still leaving the declaration of the function itself.
  181. *
  182. * Arguments : none
  183. *
  184. * Returns : none
  185. *
  186. * Note(s) : (1) This code doesn't do anything, it simply prevents the compiler from optimizing out the 'const'
  187. * variables which are declared in this file.
  188. * (2) You may decide to 'compile out' the code (by using #if 0/#endif) INSIDE the function if your compiler
  189. * DOES NOT optimize out the 'const' variables above.
  190. ************************************************************************************************************************
  191. */
  192. void OSCfg_Init (void)
  193. {
  194. (void)&OSCfg_DataSizeRAM;
  195. (void)&OSCfg_IdleTaskStkBasePtr;
  196. (void)&OSCfg_IdleTaskStkLimit;
  197. (void)&OSCfg_IdleTaskStkSize;
  198. (void)&OSCfg_IdleTaskStkSizeRAM;
  199. #if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
  200. (void)&OSCfg_IntQBasePtr;
  201. (void)&OSCfg_IntQSize;
  202. (void)&OSCfg_IntQSizeRAM;
  203. (void)&OSCfg_IntQTaskStkBasePtr;
  204. (void)&OSCfg_IntQTaskStkLimit;
  205. (void)&OSCfg_IntQTaskStkSize;
  206. (void)&OSCfg_IntQTaskStkSizeRAM;
  207. #endif
  208. (void)&OSCfg_ISRStkBasePtr;
  209. (void)&OSCfg_ISRStkSize;
  210. (void)&OSCfg_ISRStkSizeRAM;
  211. #if (OS_MSG_EN > 0u)
  212. (void)&OSCfg_MsgPoolSize;
  213. (void)&OSCfg_MsgPoolSizeRAM;
  214. (void)&OSCfg_MsgPoolBasePtr;
  215. #endif
  216. #if (OS_CFG_STAT_TASK_EN > 0u)
  217. (void)&OSCfg_StatTaskPrio;
  218. (void)&OSCfg_StatTaskRate_Hz;
  219. (void)&OSCfg_StatTaskStkBasePtr;
  220. (void)&OSCfg_StatTaskStkLimit;
  221. (void)&OSCfg_StatTaskStkSize;
  222. (void)&OSCfg_StatTaskStkSizeRAM;
  223. #endif
  224. (void)&OSCfg_StkSizeMin;
  225. (void)&OSCfg_TickRate_Hz;
  226. (void)&OSCfg_TickTaskPrio;
  227. (void)&OSCfg_TickTaskStkBasePtr;
  228. (void)&OSCfg_TickTaskStkLimit;
  229. (void)&OSCfg_TickTaskStkSize;
  230. (void)&OSCfg_TickTaskStkSizeRAM;
  231. #if (OS_CFG_TMR_EN > 0u)
  232. (void)&OSCfg_TmrTaskPrio;
  233. (void)&OSCfg_TmrTaskRate_Hz;
  234. (void)&OSCfg_TmrTaskStkBasePtr;
  235. (void)&OSCfg_TmrTaskStkLimit;
  236. (void)&OSCfg_TmrTaskStkSize;
  237. (void)&OSCfg_TmrTaskStkSizeRAM;
  238. #endif
  239. }