如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6

现在想移植到的STM32F103C8
72MHz, 64kB Flash, 20kB SRAM,
原来正点原子的STM32F103RC
72MHz, 256kB Flash, 48kB SRAM,

如下图,点魔法棒,进入Device,选择需要更换的芯片,将stm32f103RCT6换成stm32f103C8T6
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第1张图片
进入Target,更换频率为8.0HZ,如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第2张图片
进入C/C++,将STM32F10X_HD,USE_STDPERIPH_DRIVER换成STM32F10X_MD,USE_STDPERIPH_DRIVER,也就是HD变MD。因为c8t6是中容量芯片,含64kB Flash
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第3张图片
换前
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第4张图片
换后
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第5张图片
如果不换,会这样报错
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第6张图片

进入Debug,点击Setting
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第7张图片
选择Flash Download,更改移除High—density…512K,如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第8张图片
添加Med—density…128K
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第9张图片
然后进入代码文件,更换启动文件,在_hd.s处右键,然后Remove
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第10张图片
在文件夹CORE处右键,添加已存在的Add Existing Files
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第11张图片
进入CORE进寻找如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第12张图片
添加中等容量产品的启动文件如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第13张图片
添加后
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第14张图片
再进入FreeRTOS操作系统修改堆栈
可能裸机的代码刚好够内存使用,因为加了FreeRTOS操作系统,得修改堆栈大小,否则这样报错
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第15张图片
两种办法更改堆(heap)的大小
1,如图进入操作系统配置文件FreeRTOSConfig.h,因为STM32C8T6总共才20kB SRAM,需要将堆适当改小,栈才有空间
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第16张图片
改成5*1024个字节,即5KB
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第17张图片
第二种是在启动文件_md.s中,如图点击Configuration Wizard展开堆(Heap)栈(Stack),适当调整,
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第18张图片
这个过程中,我将堆分配为0k,栈分配1k,由于方法一中也分配了堆,总的堆就是0K+5K=5K,即总的堆的大小两种分配方法堆的总和。
0x400=1024B=1K
0x800=2048B=2K
0x1000=4096B=4K
……
将原来RCT6的堆栈
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第19张图片
改成下图,编译没报错

如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第20张图片
最后参考stm32手册改引脚,增加或者删去多余引脚和功能代码
例如C8t6最小系统板,没有LCD显示模块,不需要用,可以移除类似这样的文件,删去包含的头文件等
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第21张图片
选择要移除的文件,右键,选择Remove File
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第22张图片
头文件路径可删可不删,为了更简洁直观一点,我选择删了
点击魔法棒进入
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第23张图片
选中,再点红色的X
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第24张图片
重新编译,测试代码,修改引脚,因为不同容量产品的芯片,引脚是不同的,RCT6有64个引脚,而C8T6只有48个引脚,整理了一下。

如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6_第25张图片
接下来慢慢修改BUG……

你可能感兴趣的:(嵌入式,嵌入式,stm32)