你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ST7 C语言程序定位:在STVD7中如何配置

[复制链接]
endlesswind 发布时间:2008-9-3 14:50
STVD7的开发环境中提供了非常方便的手段,可以轻松的实现C语言程序的存储定位。以下说明以我另一个帖子的例子作为前提:
: g/ v4 a8 X0 {. gST7 16位通用定时器中的输出比较功能(Output Compare)详解: u/ I5 k2 m9 [7 k: A
  假定我有一个函数delay()需要定位到0x8000开始的区域;有三件事要做:
; p" o2 k* p4 b3 G- L/ s1)原有的代码段是默认定位在从0x8000开始的区域,把默认代码段重定位到从0x9000开始的区域;$ Z+ B$ k" H+ }$ m" d4 N: k# h" g
2)在函数delay()前用#pragma定义一个新的代码段,命名为.delay_code,程序片断如下;
0 L3 f8 @/ [6 x0 f; J  Y1 g3)将新的代码段.delay_code定位在从0x8000开始到0x8FFF结束的区域。 $ ~# u9 j) V4 [6 h7 C2 v$ g

: R0 r+ |' k+ c) y9 w  ^( Y. _程序片断: 1 p+ w/ k* l9 V6 K) c/ B5 m
--------------------------------------------------------------------------------
, ^. b2 Q6 e2 m/ C+ B+ e; a, K#pragma section (delay_code) // 定义新代码段 - G1 i, U7 z# j. J; i' c3 G# Z
void delay(void)& h' B! ?: ?+ ~$ I. R+ L
{1 u( W. \3 k. p( Y% a1 T( R
unsigned char counter;
. p1 `+ R0 i8 l% C, Tfor (counter = 0; counter < 100; counter++)
/ s& R9 V; D  e* S6 C/ E3 n) m_asm("nop");  \3 h+ k; _2 m& P  C, T
} / k$ i( B2 p  S! C) N* s; {- D' f7 W
#pragma section () // 以下代码恢复到默认代码段
* Q9 e( b2 G( b1 x7 V-------------------------------------------------------------------------------- " |/ c+ G4 C7 q. S  o$ f; I
完成代码段的定位、重定位,请按Project/Settings...,按照下图配置就可完成:
; t$ e0 t: ~* f/ U3 }! [) b, u) `# L4 r6 m, M- {
编译完后的.map文件显示定位成功:
& i1 B  C  n( \! H--------. N( T3 A* R+ s+ O' K' c& z
Segments# L* X, Q4 }! E1 h
-------- 4 u( U2 d" U8 Q- U3 ?

# i! t/ R3 w! Sstart 00009000 end 000090da length 218 segment .text
收藏 评论0 发布时间:2008-9-3 14:50

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版