summaryrefslogtreecommitdiff
path: root/Project/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'Project/src/main.c')
-rw-r--r--Project/src/main.c100
1 files changed, 46 insertions, 54 deletions
diff --git a/Project/src/main.c b/Project/src/main.c
index d831fbf..41e5f86 100644
--- a/Project/src/main.c
+++ b/Project/src/main.c
@@ -1,6 +1,6 @@
/**
******************************************************************************
- * @file STM32L152_Ex01_3TKeys_EVAL\src\main.c
+ * @file STM32L152_Ex01_3TKeys_EVAL\src\main.c
* @author MCD Application Team
* @version V1.1.0
* @date 24-February-2014
@@ -16,34 +16,32 @@
*
* http://www.st.com/software_license_agreement_liberty_v2
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
- */
+ */
/*
- .
- . ,
- STM32CubeMX.
+ Здесь необходимо создать большой комментарий о характеристиках железа МК. Или
+же лучше создать отдельный файл и сделать на него ссылку. Кстати, такой файл
+создает программа STM32CubeMX.
- , ,
- ( , , , )
+И вообще, нужно создать глобальную папку проекта, где будет лежать все по
+полочкам ( схема, программа, текстовые файлы, документация и тд )
*/
-//#define LED_DRIVER
-
-// NixieClock_v2,
+// Это программа для версии NixieClock_v2, которая является модифицированной версией предыдущей
// NixieLUT
/* Includes ------------------------------------------------------------------*/
#include "time.h"
#include "main.h"
-// FreeRTOS includes
+// FreeRTOS includes
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
@@ -69,26 +67,26 @@
/* Private defines -----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
-//
-// - ?
+// Задаем размеры кучи для каждой задачи отдельно
+// - как правильно определить необходимый минимум для кучи задачи?
-#define STACK_SIZE_HEAD ( (unsigned short) 230 )
-#define STACK_SIZE_NIXIE_DRIVER ( (unsigned short) 80 )
-#define STACK_SIZE_BUTTON ( (unsigned short) 200 )
+#define STACK_SIZE_HEAD ( (unsigned short) 230 )
+#define STACK_SIZE_NIXIE_DRIVER ( (unsigned short) 80 )
+#define STACK_SIZE_BUTTON ( (unsigned short) 200 )
#define STACK_SIZE_LIGHT_SENSOR ( (unsigned short) 70 )
#ifdef LED_DRIVER
-#define STACK_SIZE_LED_DRIVER ( (unsigned short) 70 )
+#define STACK_SIZE_LED_DRIVER ( (unsigned short) 70 )
#endif
-#define STACK_SIZE_INDICATE_MODES ( (unsigned short) 250 )
+#define STACK_SIZE_INDICATE_MODES ( (unsigned short) 250 )
/* Private functions prototype ---------------------------------------------- */
// ----------------------------------------------------------------------------
-//
+// Инициализация до создания задач
// ----------------------------------------------------------------------------
void InitAll ( void )
-{
+{
InitLTimers ();
NixieDriverInit ();
LightSensorInit();
@@ -102,47 +100,44 @@ void InitAll ( void )
ButtonInit ();
}
+BaseType_t TaskSuccess = NULL;
-BaseType_t TaskSuccess = NULL;
-
-// ------------------------------------------------------------- //
+// Главный цикл ------------------------------------------------------------- //
int main ()
-{
+{
InitAll ();
-
- // FreeRTOS ----------------------------------------------- //
-
- // !!!
- // ! ( )
-
- // ,
- // , .
- //
-
- //BaseType_t TaskSuccess = NULL;
-
- TaskSuccess = xTaskCreate ( Head_Task, "Head_Task", STACK_SIZE_HEAD, NULL, tskIDLE_PRIORITY + 2, NULL );
+
+ // Создаем задачи FreeRTOS ----------------------------------------------- //
+
+ // ВНИМАНИЕ !!!
+ // Необходимо проверять кучу при создании задачи! ( и очереди )
+
+ // Если в программе используется подключаемая библиотека, которая использует
+ // ОСРВ, то задача должна там и создаватья. То есть это нужно оформить в
+ // в виде специальной функции
+
+ TaskSuccess = xTaskCreate ( Head_Task, "Head_Task", STACK_SIZE_HEAD, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
-
- TaskSuccess = xTaskCreate ( IndicateModes_Task, "IndicateModes_Task", STACK_SIZE_INDICATE_MODES, NULL, tskIDLE_PRIORITY + 2, NULL );
+
+ TaskSuccess = xTaskCreate ( IndicateModes_Task, "IndicateModes_Task", STACK_SIZE_INDICATE_MODES, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
- TaskSuccess = xTaskCreate ( Button_Task, "Button_Task", STACK_SIZE_BUTTON, NULL, tskIDLE_PRIORITY + 2, NULL );
+ TaskSuccess = xTaskCreate ( Button_Task, "Button_Task", STACK_SIZE_BUTTON, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
- TaskSuccess = xTaskCreate ( LightSensor_Task, "LightSensor_Task", STACK_SIZE_LIGHT_SENSOR, NULL, tskIDLE_PRIORITY + 2, NULL );
+ TaskSuccess = xTaskCreate ( LightSensor_Task, "LightSensor_Task", STACK_SIZE_LIGHT_SENSOR, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
-
- TaskSuccess = xTaskCreate ( NixieDriver_Task, "NixieDriver_Task", STACK_SIZE_NIXIE_DRIVER, NULL, tskIDLE_PRIORITY + 2, NULL );
+
+ TaskSuccess = xTaskCreate ( NixieDriver_Task, "NixieDriver_Task", STACK_SIZE_NIXIE_DRIVER, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
-
+
#ifdef LED_DRIVER
- TaskSuccess = xTaskCreate ( LED_Driver_Task, "LED_Driver_Task", STACK_SIZE_LED_DRIVER, NULL, tskIDLE_PRIORITY + 2, NULL );
+ TaskSuccess = xTaskCreate ( LED_Driver_Task, "LED_Driver_Task", STACK_SIZE_LED_DRIVER, NULL, tskIDLE_PRIORITY + 2, NULL );
configASSERT( TaskSuccess );
#endif
- vTaskStartScheduler (); // ( )
-
+ vTaskStartScheduler (); // И запускаем диспетчер задач ( он же планировщик )
+
} // end of main
@@ -156,7 +151,7 @@ int main ()
* @retval None
*/
void assert_failed ( uint8_t* file, uint32_t line )
-{
+{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
@@ -168,12 +163,9 @@ void assert_failed ( uint8_t* file, uint32_t line )
#endif
-// - FreeRTOS ------------------------------------------------ //
+// Специальные ф-ии FreeRTOS ------------------------------------------------ //
void vApplicationMallocFailedHook ( void ) { for( ;; ); }
void vApplicationStackOverflowHook ( TaskHandle_t pxTask, char *pcTaskName ) { for( ;; ); }
void vApplicationIdleHook ( void ) { }
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
-
-