【FreeRTOS】【MCU】【APM32】基于APM32标准库+FreeRTOS的APM32工程搭建

一、简介

基于MCU移植FreeRTOS,进行多线程的嵌入式开发。

二、基础工程搭建过程

珠海极海半导体有限公司 | APM32工业级微控制器

珠海极海半导体有限公司 | APM32F103系列

2.1 从SDK里拷贝资源到自己的工程文件夹里

整体框架

2.2 芯片支持相关文件(chip_driver\apm32f103\

拷贝到chip_driver\apm32f103\,标准驱动文件,cortex-m3的内核通用文件,以及设备文件夹中极海半导体给的系统相关的文件和对应的开发环境的.s汇编启动文件

2.3 输出文件夹(out\)

在keil中指定,进入魔法棒

2.4 keil工程启动文件夹

2.5 自行安装该MCU的keil环境支持DFP包

如果还不会就参考例程

2.6 打开keil,点击project新建工程到工程文件夹的mdk里

2.7 调整过程结构

添加文件到工程结构里

导入.c文件,.h文件在编译后会在.c文件下 ,不建议引入,会导致目录繁杂

点击ok

2.7 魔法棒,导入各文件的文件路径才能找到

c/c++

会自动转为相对路径

2.8 编译查看是否通过

打开关联信息,即可跳转

(1)如果出现一定要添加.s文件进来,添加到左侧工程.c/.s文件以及配合头文件路径才会真正起效

(2)如果出现启动文件符号定义问题的添加宏

解决方法:

2.9 成功搭建基础工程

三、移植FreeRTOS

新建文件夹os

3.1 找到FreeRTOS源码,SDK包的中间件文件夹里

拷贝到工程文件夹的os文件夹里

3.2 添加头文件路径

注:可以只添加头文件路径,因为.c和.s文件是添加到了keil工程文件结构里(左侧),而.h文件需要另外添加路径

3.3 添加.c文件

3.4 添加FreeRTOS相关的用户文件,与主任务main隔离开

freertos_task.h

复制代码
#ifndef __FREERTOS_TASK_H
#define __FREERTOS_TASK_H

#include "freertos.h"
#include "task.h"

void AppTaskCreate(void);

#endif

freertos_task.c

复制代码
#include "freertos_task.h"

void AppTaskCreate(void)
{

}

main.c

复制代码
#include "apm32f10x.h"

#include "freertos_task.h"

int main(void)
{
	while(1)
	{
	  AppTaskCreate();
	  vTaskStartScheduler();
	}
}


3.5 要使用自定义的FreeRTOS配置文件,创建FreeRTOSConfig.h文件

3.6 改中断文件

注释掉三个中断,因为FreeRTOS里已经实现,同时核心时钟SysTick会交接给FreeRTOS

(1)如果出现大量错误,以及提示GCC\ARM_CM3的port.c有问题

解决方法:将编译器换成6版本的,不要使用5版本的

3.7 成功移植os

相关推荐
飞睿科技11 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
来自晴朗的明天12 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)13 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术13 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao14 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报14 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_110121 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋1 天前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
梁洪飞1 天前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
进击的小头1 天前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机