AT32F415移植FreeRTOS

为什么要使用AT32F415呢?

无意中发现一块电路板上使用的是AT32F415。。。很是好奇这是什么CPU???在网上查了下发现性价比很不错。之前用过GD32F303做产品。下面把AT32F415与GD32F303做个简单的对比。
1、列表参数对比如下图
在这里插入图片描述
从上图对比看来,两款MCU在Flash相同,封闭相同的前提下,AT32F415的SRAM为32K,最高主频150M,GD32F303的SRAM为48K最高主频120M。其它基本相同。+

2、MCU引脚分布对比
在这里插入图片描述
从上图对比可以看出,AT32F415RCxx较GD32F303RCxx少了两组供电,也就是说多了4个I/0。在SRAM够用的情况下AT32F415RCxx完全可以做为GD32F303RCxx的替代。。。。备胎
对于研发人员、以及产品来说最大的诱惑就是性价比!性价比!性价比!重要的事情说三遍!所以在其它的项目上试用了AT32F415。

AT32F415的应用

既然要使用AT32F415了那么要对开发环境等资源了解一下,不查不知道一查发现AT32F415的资料挺多的,公司官网上的资料很全面。可以放心的使用了。下面列出部分开发相关资料:

  1. AT32F415 雅特力官网 https://www.arterytek.com/cn 这在里可以找到你想要的东东。
  2. AT32 MCU图形化配置软件【AT32_Work_Bench】,可以生成初始化C代码。这个工具不错,类似ST的CubeMx;
    ST的CubeMx内有FreeRTOS,完成相关配置可以一并生成代码。AT32_Work_Bench内FreeRTOS,这样就需要手动来完成移植了。
    AT32 MCU图形化配置软件【AT32_Work_Bench】很好上手。

AT32 Work Bench生成测试程序低层代码

1、打开AT32 Work Bench软件,先择要用的MCU型号。然后点击【新建】。
在这里插入图片描述
2、选择外部时钟
在这里插入图片描述
3、配置时钟树 设置为120M

在这里插入图片描述

4、配置调试口为SWD
在这里插入图片描述
5、配置ADC
在这里插入图片描述
ADC开启DMA模式
在这里插入图片描述
ADC_DMA NVIC设置
在这里插入图片描述
6、配置CAN
在这里插入图片描述
CAN NVIC设置
在这里插入图片描述
7、配置TMR3
在这里插入图片描述
TM3 NVIC设置
在这里插入图片描述
8、配置USART1
在这里插入图片描述
USART1 设置NVIC
在这里插入图片描述
9、配置USART2
在这里插入图片描述
USART2 DMA设置
在这里插入图片描述
USART2 NVIC设置
在这里插入图片描述

10、NVIC配置
在这里插入图片描述

在这里插入图片描述
将外设 抢占优先级 都设置为5,是为了FreeRTOS管理AT32F415的中断,如果AT32F415的中断优先级超出FreeRTOS管理范围程序在长时间运行时有可能会出现假死现象。之前发过https://blog.youkuaiyun.com/qq_35830231/article/details/125871280#comments_31177263这个帖子。

11、生成代码
在这里插入图片描述
配置完成后 点击【确定】生成代码。

FreeRTOS移植到AT32F415

之前一直使用FreeRTOS已经习惯使用操作系统做程序了。所以着手将FreeRTOS移植到AT32F415。
1、点击 【打开文件夹】
在这里插入图片描述
在MDK_V5中打开工程
在这里插入图片描述
点击 编译后,没有错误、告警。生成代码没有问题。下面准备移植FreeRTOS。
在这里插入图片描述
2、FreeRTOS移植
a、先在网上下个FreeRTOS包。
在生成代码的文件夹下新建FreeRTOS文件夹。
在这里插入图片描述
b、在新建的FreeRTOS文件夹中拷贝FreeRTOS包中的include、portable、source三件文件
在这里插入图片描述
include文件内容如下:
在这里插入图片描述
portable文件内容如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多的文件都删除。

source文件内容如下:
在这里插入图片描述
c、在MDK工程中新建两个Group
一个是FreeRTOS/source、一个是FreeRTOS/portable
在这里插入图片描述

FreeRTOS/source、FreeRTOS/portable两个文件添加下图中文件。
在这里插入图片描述
编译后会出现一个问题。
在这里插入图片描述
仔细阅读AT32F415手册发现 AT32F415没有浮点运算单元 (FPU)。这可以就是AT32F415性价比高的原因。之前使用过的GD32F303是有浮点运算单元 (FPU)的。
所以不能使用ARM_CM4F中的port.c。要使用…\FreeRTOS\portable\RVDS\ARM_CM3\port.c

在这里插入图片描述
再次编译程序
在这里插入图片描述
发现有两个错误
在这里插入图片描述
将at32f415_int.c中这两个函数屏蔽
在这里插入图片描述
再次编译程序 没有错误了。
在这里插入图片描述
下面建立两个任务测试下。
增加一个运行灯RUNLED测试任务使用
在这里插入图片描述

在这里插入图片描述
创建两个任务
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2c30b9108a04428498b7ede9e8168d22.png

在这里插入图片描述
FreeRTOSConfig.h配置文件修改
修改系统时钟
在这里插入图片描述
修改中断管理范围
在这里插入图片描述

分别屏蔽两个任务中的LED灯,烧录程序,两个任务可以正常运行。

AT32F415应用过程序中遇到问题

项目中增加了Boot更新程序功能,在做BOOT工程时对2路ADC进行了初始化。用户程序中对也2路ADC进行了初始化。ADC使用DMA模式。结果发现每次上后2路ADC的转换结果不对,有时会发生1、2通道的转换结果发生了互换。也就是2通道的结果到1通过了,1通道的结果到2通道了。
最终发现是ADC多次初始化引起的,将BOOT工程中的ADC初始化屏蔽。一切就正常了。

以上是我对AT32F415应用的理解,请大家多多指教!多谢!希望我的分享对你有所帮助

### FreeRTOS 移植AT32F415 微控制器 #### 选择合适的FreeRTOS版本 对于AT32F415微控制器而言,建议访问官方渠道获取最新稳定版的FreeRTOS。通常,在官网上可以根据需求挑选适合开发环境的具体版本[^2]。 #### 获取移植资源文件 考虑到不同系列间存在架构相似性,可以从开源平台寻找相近型号的成功移植案例作为参考。例如,针对同属Cortex-M4架构下的AT32f403a已有现成的移植实例可供借鉴,其项目地址提供了详尽资料与源码支持[^3]。 #### 配置`FreeRTOSConfig.h` 基于目标硬件特性调整核心参数设定至关重要。虽然具体路径可能有所差异,但配置逻辑大体一致:需定位并修改适用于所选MCU的`FreeRTOSConfig.h`文件来适配特定处理器的需求。此过程涉及定义诸如时钟频率、中断优先级等关键属性以确保操作系统正常运作[^1]。 ```c #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ((TickType_t)1000) #define configMAX_PRIORITIES (7) ``` #### 初始化代码编写 为了使FreeRTOS能在新平台上顺利启动,必须完成一系列初始化操作。这部分工作主要包括设置系统时钟、外设以及调用FreeRTOS API进行任务调度准备等工作。以下是简化后的初始化流程片段: ```c int main(void){ HAL_Init(); /* 复位所有外设, 初始化Flash接口和Systick */ // 系统时钟配置 SystemClock_Config(); // 创建初始任务... xTaskCreate(vStartDefaultTask,"default",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xHandle); vTaskStartScheduler();/* 开始任务调度 */ while(1); /* 此处永远不会到达 */ } ``` #### 测试验证 最后一步是对整个系统的功能性进行全面测试,确认各项功能按预期执行无误。这期间应特别关注实时性能表现是否满足应用场合的要求,并据此优化相关参数直至达到理想状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值