在使用RT-Thread 3.1.x 时, warning: #1296-D: extended constant initialiser used处理

最近RT-Thread 3.1.x 时,在配置gpio驱动程序时,遇到warning: #1296-D: extended constant initialiser used告警,通过搜索一直没有找到答案,从官网提供的解决方法得到一点灵感:

Why do I see "Warning: #1296-D: extended constant initialiser used"?

Applies to: RealView Development Suite (RVDS)

Answer

When compiling C code containing statements like this:

int x;
int y = (int) &x;

where x and y are static objects (global variables or static local variables), the compiler will report:

Warning: #1296-D: extended constant initialiser used

解决方法:

int x;
int* y = &x;

so that y is now a pointer to x.

RT-Thread的STM32目录下开发板支持包下的drv_gpio.h有定义:

GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__STM32_PORT(PORTx) - (rt_base_t)GPIOA)/(0x0400UL) )) + PIN)

我再drv_led.c驱动文件中引用

#ifdef BSP_USING_LED1_PIN
/*LED1_PIN --> PA15 */
#define LED1_PIN GET_PINxy(A,15)
#define DRV_LED1_CONFIG                                  \
    {                                                                                                       \
                .led_name = "led1",                              \
        .led_pin = LED1_PIN,                                    \
    }
#endif

Keil编译时产生告警:

warning: #1296-D: extended constant initialiser used

现将其修改上面定义修改如下:

#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( (rt_base_t)(__STM32_PORT(PORTx) - GPIOA)/(0x0400UL) )) + PIN)

Keil编译后告警消失。

但是后来验证发现,改后指示灯端口未能正确初始化,指示灯点不亮。还得改回来,问题正在进一步研究中。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aping_cs_dn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值