This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如果 m 连接使用外部振荡器的器件。 我是否还需要以该速率运行我的控制器? Ds1307使用晶体振荡器32.768kHz。 以便在 LCD 之类的东西或七个段上显示它。。。我是否应该运行具有外部振荡器的微控制器。 如果不是、则不会出现波束计时问题?
m 使用物理板...tm4c123g
MASTER_STATUS_REGISTER 显示忙状态永远。 它在检查是否不忙时停留在 while 循环中...即
while (I2C3_MSTATUS_R 和0x01){};
如果我移除 GPIO_init、它将初始化7个段的引脚。 一切都很适合 ds1307。 但写入此值会使主器件卡在该位置。 MASTER_STATUS_REG 显示忙前灯
多个论坛成员通过(协助)这个主题、"7段 LED 和 LCD 时间多路复用"线程-被称为"工作"、然后被放弃。
没有海报的主题"外部振荡器"已解决-这里的每个/每一个(最近)发布都转向振荡器的转向强度/强度太大!
空 I2Csend (unsigned char slave_addr、unsigned char data_addr、unsigned char 数据)
{
while (I2C3_MSTATUS_R & 0x01){};//忙
I2C3_MSA_R =(SLAVE_ADDR <1);//配置从器件进行写入
I2C3_MDATA_R = DATA_addr;
I2C3_MCONTROL_R =CMD_BURST_SEND_START; //0x03
while (I2C3_MSTATUS_R & 0x01){};//这是 stuck...not 溢出循环的位置...如果 GPIO_init 在 main 中调用...这是一行...
I2C3_MDATA_R =数据;
I2C3_MCONTROL_R = CMD_BURST_SEND_CONT;//0x01
while (I2C3_MSTATUS_R 和0x01){};
I2C3_MCONTROL_R = CMD_BURST_SEND_FINISH;//0x05
while (I2C3_MSTATUS_R 和0x01){};
}
unsigned char I2CReceive (unsigned char slave_addr、unsigned char data_addr)//从从从器件读取
{
unsigned char 值= 0;
while (I2C3_MSTATUS_R 和0x01){};//等待主机变为空闲状态(最后一个是忙位)
I2C3_MSA_R =(SLAVE_ADDR <1);//配置从器件进行写入
I2C3_MDATA_R = DATA_addr;
I2C3_MCONTROL_R =CMD_SINGLE_SEND;//0x07
while (I2C3_MSTATUS_R 和0x01){};
I2C3_MSA_R =((SLAVE_ADDR<1)| 0x01);//配置从器件进行读取
I2C3_MCONTROL_R =CMD_SINGLE_Receive;//0x07
while (I2C3_MSTATUS_R 和0x01){};
Value=(unsigned char) I2C3_MDATA_R;
返回值;
}