在线时间4 小时
UID342926
ST金币0
蝴蝶豆0
注册时间2012-2-20
初级会员
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
請問各位高手,以下的程式是針對STM8-128-EVAL demonstration firmware去修改的
環境是使用stvd 4.3.2
在仿真過程中,只有第一次剛送電仿真的時,程式可以順利執行過紅字的部分
但是如果chip reset之後,程式執行都會停在紅字的部分,請問該如何解決??
另外有哪些暫存器會影響I2C_SR1的START BIT的變化,由於是參考原廠提供的LIBRARY修改的
沒道理START bit不會enable阿 疑問....
void Read_HAF(void)
{
uint8_t i = 0x00;
uint8_t j = 0x00;
I2C_Cmd( ENABLE);
/* Re-send start & wait event detection */
I2C_GenerateSTART(ENABLE);
j=I2C->SR1;
while(!(I2C->SR1 & 0x01));
while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
/* Send slave Address in read direction & wait event */
I2C_Send7bitAddress(0x92, I2C_DIRECTION_RX);
while (!I2C_CheckEvent(I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
//I2C_ClearFlag(I2C_FLAG_ADDRESSSENTMATCHED);
I2C_AcknowledgeConfig(I2C_ACK_NEXT);
while(I2C_GetFlagStatus( I2C_FLAG_ADDRESSSENTMATCHED) == RESET);
I2C_ClearFlag(I2C_FLAG_ADDRESSSENTMATCHED);
(void)I2C->SR3;
I2C_AcknowledgeConfig(I2C_ACK_NONE);
I2C_GenerateSTOP(ENABLE);
EEPBuffer = (uint8_t)(I2C_ReceiveData());
//while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_RECEIVED));
i++;
EEPBuffer = (uint8_t)(I2C_ReceiveData());
/* Send STOP Condition to end transmission */
} |
|