搜索
查看: 5152|回复: 0

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

[复制链接]

该用户从未签到

16

主题

14

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2008-9-3 14:50:44 | 显示全部楼层 |阅读模式
STVD7的开发环境中提供了非常方便的手段,可以轻松的实现C语言程序的存储定位。以下说明以我另一个帖子的例子作为前提:
ST7 16位通用定时器中的输出比较功能(Output Compare)详解
  假定我有一个函数delay()需要定位到0x8000开始的区域;有三件事要做:
1)原有的代码段是默认定位在从0x8000开始的区域,把默认代码段重定位到从0x9000开始的区域;
2)在函数delay()前用#pragma定义一个新的代码段,命名为.delay_code,程序片断如下;
3)将新的代码段.delay_code定位在从0x8000开始到0x8FFF结束的区域。

程序片断:
--------------------------------------------------------------------------------
#pragma section (delay_code) // 定义新代码段
void delay(void)
{
unsigned char counter;
for (counter = 0; counter < 100; counter++)
_asm("nop");
}
#pragma section () // 以下代码恢复到默认代码段
--------------------------------------------------------------------------------
完成代码段的定位、重定位,请按Project/Settings...,按照下图配置就可完成:

编译完后的.map文件显示定位成功:
--------
Segments
--------

start 00009000 end 000090da length 218 segment .text
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-14 11:19 , Processed in 1.156795 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表