/**************************************************************************** * Copyright: (C)2018 Î人ÁèÔÆÎïÍøÖÇ¿ÆÊµÑéÊÒ www.iot-yun.com * Author: GuoWenxue QQ: 281143292 * Description: STM32L151C8T6 CubeMX ¿ª·¢°å LED¡¢´®¿Ú¡¢Systick µÈ²âÊÔ³ÌÐò ¿ª·¢°åÌÔ±¦¹ºÂòµØÖ·£º https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6ff42e8dPmfuKR&id=551780894246&_u=41ifnbo379e * * ChangeLog: * °æ±¾ºÅ ÈÕÆÚ ×÷Õß ËµÃ÷ * V1.0.0 2018.11.04 GuoWenxue ·¢²¼¸Ã°æ±¾ ****************************************************************************/ #include #include "stm32_vport.h" #define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) #define ledSTACK_SIZE configMINIMAL_STACK_SIZE static void vLEDFlashTask( void * pvParameters ); static void vSerialPutsTask( void *pvParameters ); int main(void) { prvSetupHardware(); printf("STM32L151C8T6A CubeMX Board FreeRTOS Start Running.\n"); printf("Create LED Flash task now.\n"); xTaskCreate( vLEDFlashTask, "LED", ledSTACK_SIZE, ( void * ) NULL, mainFLASH_TASK_PRIORITY, ( TaskHandle_t * ) NULL ); printf("Create Serial puts task now.\n"); xTaskCreate( vSerialPutsTask, "TTY", ledSTACK_SIZE, ( void * ) NULL, mainFLASH_TASK_PRIORITY, ( TaskHandle_t * ) NULL ); /* Start the scheduler. */ printf("FreeRTOS Task Scheduler Start...\n"); vTaskStartScheduler(); printf("FreeRTOS Task Scheduler End\n"); while(1); } static void vLEDFlashTask( void *pvParameters ) { const TickType_t xFlashRate = 125/ portTICK_PERIOD_MS; for(;;) { vTaskDelay( xFlashRate ); turn_led(LED1, ON); vTaskDelay( xFlashRate ); turn_led(LED1, OFF); } } static void vSerialPutsTask( void *pvParameters ) { const TickType_t xFlashRate = 10000/ portTICK_PERIOD_MS; for(;;) { printf("Serial Puts Task Continue Running...\n"); vTaskDelay( xFlashRate ); } }