C警告:extended constant initialiser used该如何去除?

2019-07-16 10:30发布

如题,在keil中遇见了这个警告,却怎么也不能去除。求指教。
const uint32_t GPDMA_LUTPerAddr[] = {
                  ((uint32_t)&LPC_SSP0->DR),    // SSP0 Tx
                  ((uint32_t)&LPC_SSP0->DR),
                  ........
}
其中,LPC_SSP0宏定义如下,
#define LPC_SSP0              ((LPC_SSP_TypeDef       *) LPC_SSP0_BASE     )
LPC_SSP_TypeDef 是一结构体,
LPC_SSP0_BASE是ARM的一物理地址,

然后keil编译时,就出现了这个警告,warning:  #1296-D: extended constant initialiser used。这个数字空间大小为24元素,所以有24个重要的错误

求指教该如何去除这些警告?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
A670521546
1楼-- · 2019-07-16 14:51
用#define的方式定义 程序执行中直接一个个变量的地址来用,不要定义什么结构体什么的了
A670521546
2楼-- · 2019-07-16 15:25
micao
3楼-- · 2019-07-16 21:22
A670521546 发表于 2012-10-29 20:27
用#define的方式定义 程序执行中直接一个个变量的地址来用,不要定义什么结构体什么的了 ...

这样肯定是可以实现的,但是比较麻烦,一个不小心就会写错了。用结构体写,直接通过通道来查找很方便,也不会出错
micao
4楼-- · 2019-07-17 01:21
A670521546 发表于 2012-10-29 20:29
看看ARM官方给的答案:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka15182.html ...

谢谢,非常感谢,参照你提供的官方答案,问题解决了。谢谢

一周热门 更多>