diff options
Diffstat (limited to 'Project/src/main.c')
-rw-r--r-- | Project/src/main.c | 100 |
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****/ - - - |