STM8L101F3P6该款MCU官方库stsw-stm8012UtilitiesSTM8L101_EVALCommonstm8l_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,但至于为什么是这样,有空再深入分析吧。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』