【发布时间】:2016-07-26 07:53:05
【问题描述】:
我正在使用 gcc 编译器为 STM32 编写 C 代码,我尝试了建议。 我通过 i2c.h 定义从 i2c.c 调用函数。可能是我在那里做错了。 感谢 cmets。
(i2c.h)
#define Chip_TxBurst(wREG, wCNT, pbDATA) \
I2C_TxBurst((0xC0) | (((wREG) >> 7) & 0x1E), (wREG), (wCNT), (pbDATA))
(i2c.c)
void I2C_TxBurst (
uint16_t bSLA, /* I2C slave address */
uint16_t bREG, /* I2C sub-address */
uint16_t bCNT, /* The number of data which will be transmitted */
uint8_t *pbDATA /* Point to the first DATA item */
)
{
uint8_t bIdx;
for (bIdx = 0; bIdx < bCNT; bIdx++)
{
I2C_TxData(pbDATA[bIdx]);
} /* for */
} /* I2C_TxBurst */
(osd.c)
void OSD0_TEXT( uint8_t *TEXT,
uint8_t FONT_SIZE_X,
......
)
{
Chip_TxBurst(0x400, FONT_SIZE_X, TEXT);
}
(主要)
main{
OSD0_TEXT("STAY FOLISH",11);
}
#
#
(旧问题代码)
void OSD0_TEXT ( uint8_t *TEXT)
{
.....
TxBurst(0x400, strlen(TEXT), TEXT);
.....
}
main{
OSD0_TEXT("STAY FOLISH");
}
【问题讨论】:
-
您将
char[N]传递给期望uint8_t的函数(OS0_TEXT),然后将uint8_t传递给期望const char*的函数(strlen)。