侧边栏壁纸
博主头像
李振洋的博客博主等级

歌颂动荡的青春

  • 累计撰写 38 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

STM32 移植 Freertos

准备

移植

  1. 通过STM32CubeMx创建MDK空项目
    1. STM32F103
    2. RCC -> HSE
    3. SYS
      • Debug -> Serial Wire
      • Timebase Source -> TIM1
    4. GPIO -> LED
  2. 解压FreeRTOS源码
  3. 在项目新建文件夹FreeRTOS,放FreeRTOS源码
  4. 将FreeRTOS源码Source文件夹中:
    • include文件夹
    • portable文件夹
    • croutine.c
    • event_groups.c
    • list.c
    • queue.c
    • stream_buffer.c
    • tasks.c
    • timers.c
      复制到项目新建FreeRTOS文件夹下
      portable文件夹只保留以下文件夹
    • GCC
    • Keil
    • MemMang
  5. 用Kiel打开项目进行环境配置
  6. 在Manage Project Items中新建组FreeRTOS/Source,并添加
    • Manage Project Items -> Groups - > FreeRTOS\Source -> Files
      • croutine.c
      • event_groups.c
      • list.c
      • queue.c
      • stream_buffer.c
      • tasks.c
      • timers.c
  7. 在Manage Project Items中新建组FreeRTOS/Others,并添加
    • Manage Project Items -> Groups - > FreeRTOS/Others -> Files
      • port.c
      • heap_4.c
        port.c位于FreeRTOS\portable\GCC\ARM_CM3,
        heap_4.c位于FreeRTOS\portable\MemMang
  8. 添加头文件
    • Options for Target -> C/C++ -> Include Paths
      • FreeRTOS\include
      • FreeRTOS\portable\GCC\ARM_CM3
      • FreeRTOS
  9. 复制FreeRTOSConfig.h到FreeRTOS文件夹下,并添加到项目中
  10. 在FreeRTOSConfig.h添加以下define
#define xPortPendSVHandler 		PendSV_Handler
#define xPortSysTickHandler 	SysTick_Handler
#define vPortSVCHandler 	    SVC_Handler
  1. 注释
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);

测试

/**
	LED_Task
**/
void LED_Task(void *p)
{
	while (1)
	{
		HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
		vTaskDelay(1000);	
	}
	
}

//main函数,创建任务
xTaskCreate(LED_Task, "LED_Task", 128, NULL, 1, NULL);
//启动任务调度器
vTaskStartScheduler();
1

评论区