AT32F403A FreeRTOS_IAR7.4 demo
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>
#include "at32_board.h"
#include "FreeRTOS.h"
#include "task.h"
/** @addtogroup AT32F403A_StdPeriph_Templates
* @{
*/
/** @addtogroup Template
* @{
*/
/* LED0任务优先级 */
#define LED0_TASK_PRIO 4
/* LED0任务堆栈大小 */
#define LED0_STK_SIZE 128
/* LED0任务任务句柄 */
TaskHandle_t LED0Task_Handler;
/* LED0任务入口函数 */
void led0_task(void *pvParameters);
/* LED1任务优先级 */
#define LED1_TASK_PRIO 3
/* LED1任务堆栈大小 */
#define LED1_STK_SIZE 128
/* LED1任务任务句柄 */
TaskHandle_t LED1Task_Handler;
/* LED1任务入口函数 */
void led1_task(void *pvParameters);
/**
* @brief Main Function.
* @param None
* @retval None
*/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
AT32_Board_Init();
/* 创建LED0任务 */
xTaskCreate((TaskFunction_t )led0_task,
(const char* )"led0_task",
(uint16_t )LED0_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED0_TASK_PRIO,
(TaskHandle_t* )&LED0Task_Handler);
/* 创建LED1任务 */
xTaskCreate((TaskFunction_t )led1_task,
(const char* )"led1_task",
(uint16_t )LED1_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED1_TASK_PRIO,
(TaskHandle_t* )&LED1Task_Handler);
/* 开启任务调度器 */
vTaskStartScheduler();
}
/* LED0任务函数 */
void led0_task(void *pvParameters)
{
while(1)
{
AT32_LEDn_Toggle(LED3);
vTaskDelay(1000);
}
}
/* LED1开始任务 */
void led1_task(void *pvParameters)
{
while(1)
{
AT32_LEDn_Toggle(LED2);
vTaskDelay(500);
}
}
|