|
RAM中运行程序9 k8 ^+ n, Q5 V& b$ u 1、可使用COMSIC中的函数_fctcpy将FLASH中的代码拷贝到RAM中,并运行。5 z2 G$ U. ` b; T+ ~2 l4 M6 k 2、需要在程序中应用int_fctcpy(charname);(无需加头文件,只需声明下函数就可以了) 3、定义函数代码如下/ V5 }# R2 }7 T4 }( o #pragmasection(CODE_IN_RAM)//将下面定义的未初始化变量定义到段CODE_IN_RAM中 voidDelayUs(uchart) {2 q+ R2 M5 C: p while(t--);( X5 l) q# c" J! L& H6 D& v- Z } #pragmasection()//返回到正常的section. 5 s; Q5 M3 w* B7 O “CODE_IN_RAM”为自己的取的一个名字可以是其他名字之后在菜单栏选择Project->Settings弹出下面菜单选项* e+ T, i. @9 q h# F) `. x @0 @ 之后选择Linker选项,在Linker选项下 Category中选择Input此项后 在Ram中参建一个“.CODE_IN_RAM”段。并在Option中填入“-ic”下面是一份完整的代码/ j z/ V/ N: J* F4 x* a #include<iostm8s103.h>//stm8s系列的头文件#defineucharunsignedcharint_fctcpy(charname); 1 r- p- O2 Z; z9 w' B7 U; N5 t! g #pragmasection(CODE_IN_RAM)//将下面定义的未初始化变量定义到.namesection中. @! c2 J& [9 |" K4 a+ C: o. ~5 A2 W voidDelayUs(uchart) {# ]. ^% p/ |" t, T2 ~- t6 B5 b while(t--);/ G ]7 K: K: J6 w' |! r } #pragmasection()//返回到正常的section.@tinyunsignedchartemp_C;; W1 f/ w7 x' D / }* D; @& U5 F0 U- ^; {; { main() { _fctcpy('C');//将pragmasection(CODE_IN_RAM)中的函数赋值到RAM中//参数‘C’是CODE_IN_RAM的第一个字母 DelayUs(20);" ^& B: ~5 w0 ], o0 J2 ` X' @ while(1) { ; }4 @, a+ j9 F! B } } |
| 谢谢楼主分享。。。 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() :):):):):):):) |
STM8自学笔记(推荐STM8很好的入门电子书)
无刷直流电机控制应用+基于STM8S系列单片机---电子书
【精华资料】STM8Sxx固件库FOR IAR
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
微信公众号
手机版