1
2013.07.14 20:51
STM8L101F3P6该款MCU官方库\stsw-stm8012\Utilities\STM8L101_EVAL\Common\stm8l_eval_i2c_ee.c文件中sEE_WritePage函数中
while((uint16_t)(*NumByteToWrite) > 0)
{
/* Send the byte to be written */
I2C_SendData( *pBuffer);
/* Test on EV8 and clear it */
/* Wait till all data have been physically transferred on the bus */
while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
{}
(uint16_t)(*NumByteToWrite)--;
}
应将*NumByteToWrite转为(uint8_t)而非(uint16_t)。
发现过程:调试IIC接口时调用sEE_WritePage()时,传入参数为(uint8_t)类型,而*NumByteToWrite却始终为0,而非正常的数值。
原因:unsigned char 转unsigned shot 高字节应补0x00,但至于为什么是这样,有空再深入分析吧。