VS Code + EIDE + gcc arm移植freertos

开发环境:windows
软件:VS Code + EIDE插件
编译器:arm-none-eabi-gcc
芯片信号:STM32F103ZET6

使用STM32CubeMX生成带有freertos系统的代码工程,这个网上挺多教程的。

1.STM32CubeMX生成代码

生成代码目录如下:
在这里插入图片描述

2.VS Code + EIDE新建工程

新建项目——Create Empty Project——Empty Cotex-M Project——工程命名, 确认

第一个是新建空的工程,第二个是新建内部模板工程,会调用插件自带的工程模板在这里插入图片描述
选下面的Cotex-M的,上面8bit MCU 是51或者STM8用的,然后命名工程,确认。在这里插入图片描述

3.添加文件到工程

拷贝STM32CubeMX生成的代码到新建的工程目录下(直接拷贝官方freertos库和hal库或者标准库里面的文件效果一样,只是STM32CubeMX生成代码比较方便)
把下面几个文件复制到新建的工程下面:
在这里插入图片描述
文件名和文件放的位置可以自己修改,我的工程是下面这样的:
在这里插入图片描述

4.工程配置

添加文件到工程里面
在这里插入图片描述
编译选项配置,选对应的芯片型号,添加.ld链接文件目录:
在这里插入图片描述
烧录配置,这个我只配置了,但是没用过,不清楚好不好用,需要stlink:
在这里插入图片描述
项目依赖,添加头文件的目录和宏定义的类似keil里面的,要是前面添加文件夹的时候已经把头文件加进去了,也可以不用再添加:
在这里插入图片描述
配置完成后,就可以打开main文件,在几个task函数里面添加代码,然后编译运行了。

还有一个printf函数的重定向问题,gcc arm和keil里面的arm cc不一样,需要添加以下代码

int _write (int fd, char *pBuffer, int size)
{
	for (int i = 0; i < size; i++)
	{
		while((USART1->SR & 0x40)==0);//等待上一次串口数据发送完成  
        USART1->DR = (uint8_t) pBuffer[i];       //写DR,串口1将发送数据
	}
	return size;
}

但是我遇到一个问题,就是带有freertos系统的工程添加printf重定向能正常用,但是不带系统,直接用标准库的时候,printf就不输出,不知道为什么,希望知道的大佬评论告诉我一下。

工程模板链接

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值