CCS如何设置才能支持超过16位(32位)的地址指针

[复制链接]
2157|7
 楼主| johdon23 发表于 2015-3-31 14:07 | 显示全部楼层 |阅读模式
本帖最后由 johdon23 于 2015-3-31 14:12 编辑

     我需要用到一个指针,地址超过0x10000。在IAR下,通过设置“Data Model"为“Large”,可以支持超过16位的地址指针。
     但是在CCS中,同样的设置却无效。当地址超过0x10000时,会被强行设为0!!!
     举例:驱动库中关于Flash操作的函数 -  void FlashCtl_write8 (uint8_t *data_ptr, uint8_t *flash_ptr, uint16_t count)
     如果我在调用FlashCtl_write8 函数时,传递给flash_ptr的值大于0x10000,将会被编译器强行设为0!
dirtwillfly 发表于 2015-3-31 17:16 | 显示全部楼层
不要使用这个函数啊,这个函数的参量*flash_ptr,是uint8_t 类型的
 楼主| johdon23 发表于 2015-4-1 08:49 | 显示全部楼层
dirtwillfly 发表于 2015-3-31 17:16
不要使用这个函数啊,这个函数的参量*flash_ptr,是uint8_t 类型的

uint8_t 类型指的是这个指针指向的地址存放的是一个uint8_t 类型的数据。

我这里提到的是指针指向的地址的范围。跟地址里存放的数据是两个概念
dirtwillfly 发表于 2015-4-1 08:57 | 显示全部楼层
johdon23 发表于 2015-4-1 08:49
uint8_t 类型指的是这个指针指向的地址存放的是一个uint8_t 类型的数据。

我这里提到的是指针指向的地址 ...

嗯。昨天临近下班,没仔细看
:L
dirtwillfly 发表于 2015-4-1 08:58 | 显示全部楼层
你用的哪一个msp430?
 楼主| johdon23 发表于 2015-4-1 09:54 | 显示全部楼层
MSP430F5438A
dirtwillfly 发表于 2015-4-4 00:02 | 显示全部楼层

这个ic貌似官方没推出库函数啊,我用的ccs6.01,MSP430ware_1_97_00_47,难道太老了?
你用的什么版本的库函数?
 楼主| johdon23 发表于 2015-4-9 16:39 | 显示全部楼层
已经解决。
要将“Processeor options"下的 --code_model设为Large,并且--data_model也要设为Large
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部