当前位置:首页 > 编程笔记 > 正文
已解决

freertos入门(stm32f10c8t6版闪烁灯)

来自网友在路上 153853提问 提问时间:2023-11-05 04:49:44阅读次数: 53

最佳答案 问答题库538位专家为你答疑解惑

首先到官网下载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接收
在这里插入图片描述
然后点击全速运行,左上角
在这里插入图片描述

出现
在这里插入图片描述
这下可以看到成功了,恭喜你做到了入门

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"freertos入门(stm32f10c8t6版闪烁灯)":http://eshow365.cn/6-32425-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!