华大MCU移植FreeRTOS

1,获取华大开发包
2,获取FreeRTOS文件

首先我的IAR开发环境是IAR8,使用 HC32L136K8TA开发板

在这里插入图片描述

然后使用华大开发包的gpio_output工程,一个简单的点灯工程,为了好看一点,特意调整了一下工程路径 ,需要改动四个地方

第一个是C/C++ Compiler -> Preprocessor 更改.h路径
在这里插入图片描述

第二个是Debugger -> Setup -> Device description file 更改svd路径

在这里插入图片描述

第三个是当前工程目录下/flashloader/FlashHC32L13X.flash 更改烧写路径
在这里插入图片描述

第四个是把左边工程文件删除之后,在重新添加,到此为止工程已经整理好了
在这里插入图片描述

开始移植FreeRTOS

我选择 FreeRTOSV9.0.0,尽管现在 FreeRTOS 的版本已经更新到 V10.0.1 了,但是我还是选择 V9.0.0,因为内核很稳定,并且网上资料很多,因为 V10.0.0 版本之后是亚马逊收购了 FreeRTOS 之后才出来的版本,主要添加了一些云端组件,所以采用 V9.0.0 版本足以。

提取FreeRTOS所需文件
1,FreeRTOSv9.0.0\FreeRTOS\Source\include下所有文件(.h文件)
2,FreeRTOSv9.0.0\FreeRTOS\Source\portable\MemMang下heap_4.c文件
3,FreeRTOSv9.0.0\FreeRTOS\Source\portable\IAR\ARM_CM0下所有文件
4,FreeRTOSv9.0.0\FreeRTOS\Source下所有文件(.c文件)
5,FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_IAR\FreeRTOSConfig.h

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
提取完毕

设置IAR

在这里插入图片描述
1,IAR设置FreeRTOS路径
在这里插入图片描述
,2,IAR汇编设置路径
在这里插入图片描述

3,C/C++ Compiler -> Diagnostics 加入

Pm117,Pm119,Pm154,Pm113,Pm058,Pm003,Pm121,Pm008,Pm049,Pm139,Pm142,Pm081,Pm043,Pm069,Pm127,Pe167,Pm071防止编译器报错
在这里插入图片描述
4,FreeRTOSConfig.h最后面加入

#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
并且屏蔽SysTick_Handler

5,FreeRTOSConfig.h设置滴答定时器的中断时间,时钟频率为32M,systick定时器1ms中断一次
#define configCPU_CLOCK_HZ ( ( unsigned long ) SystemCoreClock )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )

6,HC32L136的SRAM大小为8KByte,可通过手册查看到
在这里插入图片描述
IAR设置堆栈空间 Linker -> Config ->Edit
在这里插入图片描述

这个芯片的堆栈加起来最大可以设为0x2000,8k字节
FreeRTOSConfig.h设置FreeRTOS空间大小,用了3K字节,FreeRTOS实际就是定义了一个3K字节的数组

#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 3 * 1024 ) )

7,port.c屏蔽static void prvSetupTimerInterrupt( void )里面的内容
在初始化里面加入 SysTick_Config(configCPU_CLOCK_HZ/configTICK_RATE_HZ);
void prvSetupTimerInterrupt( void )其实就是实现Systick定时器中断,因为懒得调所以直接把它屏蔽了

8,然后创建任务
在这里插入图片描述
在这里插入图片描述

9,然后就能看到灯一闪一闪了
在这里插入图片描述

在这里插入图片描述
移植FreeRTOS花了我两天时间,踩了不少坑,其实只要一步一步慢慢调试,在debug窗口上查看数据,莫心急,就能搞出来了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值