初级会员

- 积分
- 185
- 金钱
- 185
- 注册时间
- 2020-9-2
- 在线时间
- 37 小时
|

楼主 |
发表于 2021-4-23 13:38:56
|
显示全部楼层
本帖最后由 jzxiao 于 2021-4-23 13:43 编辑
D:\毕设\图片\02设置优先级最高尝试了也没用,这个和优先级没关系吧,是在临界段中调用的,都把调度器锁上了。
此外我尝试把时间片轮转调度关掉也没用。测波形发现写单字节过后没有延时,不知是不是这个引起的。
写单字节函数如下
//在AT24CXX指定地址写入一个数据
//WriteAddr :写入数据的目的地址
//DataToWrite:要写入的数据
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{
IIC_Start(); //开始信号
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//发送高地址
}else
{
IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据
}
IIC_Wait_Ack(); //等待应答信号
IIC_Send_Byte(WriteAddr%256); //发送低地址
IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite); //发送字节
IIC_Wait_Ack();
IIC_Stop();//产生一个停止条件
delay_ms(5);
}
这个delay_ms没有起到作用,波形是连续的,写一个字节后紧接着写第二个字节,
下图是调用AT24CXX_WriteLenByte(0x0002,1,2);测到的波形
|
|