打印

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

[复制链接]
1914|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

使用特权

评论回复
5
dirtwillfly| | 2015-4-1 08:58 | 只看该作者
你用的哪一个msp430?

使用特权

评论回复
6
johdon23|  楼主 | 2015-4-1 09:54 | 只看该作者
MSP430F5438A

使用特权

评论回复
7
dirtwillfly| | 2015-4-4 00:02 | 只看该作者

这个ic貌似官方没推出库函数啊,我用的ccs6.01,MSP430ware_1_97_00_47,难道太老了?
你用的什么版本的库函数?

使用特权

评论回复
8
johdon23|  楼主 | 2015-4-9 16:39 | 只看该作者
已经解决。
要将“Processeor options"下的 --code_model设为Large,并且--data_model也要设为Large

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝