C++ 检查写入寄存器的值是否正确

C++ 检查写入寄存器的值是否正确,c++,c,cpu-registers,microprocessors,C++,C,Cpu Registers,Microprocessors,我是c语言的初学者 我有一个函数,它将一些特定值写入寄存器: if(something == someCondition ) { Write_into_register( Msg->R_addres, Msg->value ); } uint read_value_from_register( R_addres addr ){} 到目前为止,这是可行的。 我还有一个读取函数,它只读取写入寄存器的值: if(something == someConditi

我是c语言的初学者

我有一个函数,它将一些特定值写入寄存器:

  if(something == someCondition )
  {

    Write_into_register( Msg->R_addres, Msg->value );
  }
uint read_value_from_register( R_addres addr ){}
到目前为止,这是可行的。 我还有一个读取函数,它只读取写入寄存器的值:

  if(something == someCondition )
  {

    Write_into_register( Msg->R_addres, Msg->value );
  }
uint read_value_from_register( R_addres addr ){}
这也很好

现在,我想要这样的东西:

int index;
Write_into_register(addres, value );
for (index=0;index<3;i++)
if (value== read_value_from_register(addres))
   return 1;
else
   return ERROR;
  • 每次将值写入寄存器时,检查它是否确实是写入寄存器的正确值(使用我的读取功能)
  • 如果未写入该值或该值不相同,请尝试3次写入正确的值
  • 如果第三次尝试不成功,则引发错误
  • 如何表示此算法并将其与现有函数相结合?你能把它表示成伪代码吗? 我会感激的

    我试过这样的方法:

    int index;
    Write_into_register(addres, value );
    for (index=0;index<3;i++)
    if (value== read_value_from_register(addres))
       return 1;
    else
       return ERROR;
    
    int索引;
    将_写入_寄存器(地址、值);
    
    对于(index=0;index假设要写入的数据是一个整数)

    int Write_verify( R_addres addr, int data)
    {
        Write_into_register(addr, data );
        if (data == read_value_from_register(addr))
           return 1;
        else
           return 0;
    }
    
    此函数将写入并验证数据。如果验证,则返回1;如果不正常,则返回0

    如果要将数据写入三次,则必须像这样修改上述代码

    int Write_verify( R_addres addr, int data)
    {
        Write_into_register(addr, data );
        for (int i=0; i<2; i++)
        {
          if (data == read_value_from_register(addr))
             return 1;
          else
             Write_into_register(addr, data );
        }
    
        // Check for last value
        if (data == read_value_from_register(addr))
           return 1;
        else
           return 0;
    }
    
    int Write\u verify(R\u addres addr,int data)
    {
    将_写入_寄存器(地址、数据);
    
    对于(int i=0;i这些寄存器是什么?为什么写入会失败并需要验证?通常寄存器是非常低级的,向它们写入基本上总是有效的。例外是在微控制器中更常见的外围寄存器或与i/O相关的寄存器。你不是很清楚。对于任何了解这些寄存器的程序员来说,这看起来微不足道循环和条件。你尝试过什么?有没有具体的问题?如果你不知道如何使用循环和条件,也许你需要一些编程入门类。这些寄存器位于集成电压控制单元内。这些值通过i2c总线从其他组件发送,这是一个安全相关系统。显示你尝试过的,很琐碎。你应该先学习C++,然后再开始编程。C++在很多方面与Ruby不同,更难。从这里挑选一本书:我尝试了一些你解释过的东西,但是用这3个尝试来看看这个值是否正确。