有优惠券网站 怎么做代理怎么攻击网站吗
news/
2025/9/24 1:21:52/
文章来源:
有优惠券网站 怎么做代理,怎么攻击网站吗,不错的网站开发公司,wordpress修改版权 违法借鉴adbms1818的底层驱动代码
前言#xff1a;adbms1818的主要用途就是不同种类的寄存器里面存储不同的数据#xff0c;程序员需要通过特定的协议往寄存器里面写入或者读出数据
#xff08;1#xff09;定义一个结构体 里面存储了adbms1818的所有寄存器的信息。然后我们看…借鉴adbms1818的底层驱动代码
前言adbms1818的主要用途就是不同种类的寄存器里面存储不同的数据程序员需要通过特定的协议往寄存器里面写入或者读出数据
1定义一个结构体 里面存储了adbms1818的所有寄存器的信息。然后我们看定义首先就是配置寄存器config其次是配置寄存器configB然后就是电压寄存器cells,辅助寄存器aux状态寄存器statCOMM寄存器组com......但是我们不知道最前面的数据类型他并不是我们熟知的int , char,short等等。
/*! Cell variable structure */
typedef struct
{ic_register config;ic_register configb;cv cells;ax aux;st stat;ic_register com;ic_register pwm;ic_register pwmb;ic_register sctrl;ic_register sctrlb;uint8_t sid[6];BOOL isospi_reverse;pec_counter crc_count;register_cfg ic_reg;long system_open_wire;
}cell_asic;
2跳转到ic_register定义 已知信息是配置寄存器组A占48个位6个字节其次协议规定的发送数据格式是 CMD0 CMD1 PEC0 PEC1 6个字节数据 PEC0 PEC1此处我们只需要考虑红色字体PEC0,PEC1类似于CRC校验码。 再次返回来看结构体首先tx_data[6]里面存储的就是寄存器里面所有位的数据rx_data[8]收到的数据包括PEC0 PEC1),rx_pec_match是标志位判断接收到的PEC和根据6位数据计算出来的PEC是否相同相同数据接收正确不同数据接收错误。 typedef struct
{uint8_t tx_data[6]; //! Stores data to be transmitted uint8_t rx_data[8]; //! Stores received data uint8_t rx_pec_match; //! If a PEC error was detected during most recent read cmd
} ic_register;
3跳转cv定义 已知信息电池电压寄存器组总共有A-F总共6组。每组存放3个电池的电压值每一个电池的电压值用16位表示。并且电压值我们只会读不会写因此只需要定义一块内存用来存储电池电压。 c_code[0]存储电池1电压c_code[1]存储电池2电压......c_code[17]存储电池18电压。pec_match[0]存储电池电压寄存器A是否读取错误......pec_match[5]存储电池电压寄存器F是否读取错误 /*! Cell Voltage data structure. */
typedef struct
{uint16_t c_codes[18]; //! Cell Voltage Codesuint8_t pec_match[6]; //! If a PEC error was detected during most recent read cmd
} cv;
处理数据的办法有两种我们已知有6组数据每一组数据有3个
方法一定义一个二维数组 uint16_t arr[6][3];
for(int i0;i6;i)
{for(int j0;j3;j){arr[i][j]表示电池电压寄存器组i的第j个电池}
}
方法二定义一个一维数组arr[18]
cur_reg//我要读取的电池电压寄存器cur_reg(范围012345)
cur_num//我要读取的电池电压寄存器的第几个电池电压(范围012)
arr[(cur_reg-1)*3cur_num]//我要读取的电池电压寄存器cur_reg的第cur_num个电池电压
4跳转st定义 /*! Status Reg data structure. */
typedef struct
{uint16_t stat_codes[4]; //! Status codes.SC ITMP VA VDuint8_t flags[3]; //! flag[0]:C4OV C4UV C3OV C3UV C2OV C2UV C1OV C1UV 依此内推uint8_t mux_fail[1]; //! Mux self test status flag MUXFAILuint8_t thsd[1]; //! Thermal shutdown status THSDuint8_t pec_match[2]; //! pec_match[0]记录状态寄存器A是否读取错误 pec_match[1]记录状态寄存器B是否读取错误
} st;
5总结 由上述的结构可以看出把寄存器当成一个对象寄存器里面存放的不同内容就是他的属性。把adbms1818当成一个对象不同的寄存器就是它的属性。因此在阅读别人的代码时你就可以看结构体这样可以更快的入手此芯片的作用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914467.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!