首先到官网下载freertos源码,然后找一个stm32f10c8t6的空模板,这个空模板实现点灯之类的都行。
然后在这个空模板的工程下新建一个FreeRtos文件夹
接着在FreeRtos文件夹下新建三个文件夹,分别是src存放源码
inc 存放头文件,port 存放移植平台相关文件
接着把FressRTOS的这个目录的文件全部复制到创建的port文件夹下(注意一个是你下载的FreeRTOS源码目录,一个是刚创建的stm32空模板,别搞乱了)
然后把FreeRTOS这个目录下文件也复制到刚创建的port文件夹下
然后回到FreeRTOS的根目录,复制这些到src文件夹下
接着复制FreeRTOS的这些到inc文件夹下
最后把FreeRTOS下的这个复制到模板工程下
然后打开这个模板工程。点击魔术棒到C++那添加文件路径
然后给每个文件夹添加文件
仔细看对着添加进去就好了,然后编译一下项目。
接着在这个配置文件中添加宏变量
然后注释三个函数SVC_Handler PendSV_Handler SysTick_Handler
然后开始编写代码,我们这里是让C13引脚输入高低电平实现LED灯闪烁的一个任务,代码如下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "freertos.h"
#include "task.h"
TaskHandle_t myTaskHandler;
void MyTask(void* arg){
while(1){
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
vTaskDelay(300);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
vTaskDelay(300);
}
}
void InitLED(){
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
InitLED();
xTaskCreate(MyTask, "Task1", 512, NULL, 2, &myTaskHandler);
vTaskStartScheduler();
}
然后下载进板子就可以看到小灯闪烁了,还有一种可以看到现象用逻辑分析仪:
首先打开魔术棒,然后设置如下
然后点击Debug开始按钮,点击Setup,设置为PORTC.13,Bit接收
然后点击全速运行,左上角
出现
这下可以看到成功了,恭喜你做到了入门