函数传参,代码bug

发布于 2025-02-23 01:50:18

void bsp_i2c_init()
{
    wm_i2c_div_low8_bit_t un_i2c_low8;
    un_i2c_low8.clk_div=79;
    wm_i2c_div_high8_bit_t un_i2c_high8;
    un_i2c_high8.clk_div=79;
    wm_i2c_ctrl_t un_i2c_ctrl;
    un_i2c_ctrl.ctrl_enable=1;

    wm_i2c_reg_t reg_wm_i2c;
    reg_wm_i2c.low8bit=un_i2c_low8;
    reg_wm_i2c.high8bit=un_i2c_high8;
    reg_wm_i2c.ctrl=un_i2c_ctrl;

    wm_hal_i2c_dev_t wm_hal_i2c_dev;
    wm_hal_i2c_dev.ctx=0;
    memcpy(&wm_hal_i2c_dev.reg,®_wm_i2c,sizeof(wm_i2c_reg_t));
   
    wm_hal_i2c_config_t wm_hal_i2c_config;
    wm_hal_i2c_config.addr_bits=7;
    wm_hal_i2c_config.speed=WM_I2C_SPEED_STANDARD;

    int flag=wm_hal_i2c_init(&wm_hal_i2c_dev,&wm_hal_i2c_config);
    printf("wm_hal_i2c_init=%dn",flag);

    uint8_t buf[10]={0x00};
    flag=wm_hal_i2c_tx_polling(&wm_hal_i2c_dev,I2C_ADDR,buf,1,0,10);
    printf("wm_hal_i2c_tx_polling=%dn",flag);
    flag=wm_hal_i2c_rx_polling(&wm_hal_i2c_dev,I2C_ADDR,buf,1,0,10);
    printf("wm_hal_i2c_rx_polling=%dn",flag);
}//下面是sdk函数我加了个printf
int wm_hal_i2c_init(wm_hal_i2c_dev_t dev, wm_hal_i2c_config_t cfg)
{
    wm_hal_i2c_ctx_t *ctx;

    WM_HAL_I2C_CHECK_PARAM(dev && cfg && cfg->ref_clock > 0 && cfg->addr_bits == 7);

    if (dev->ctx) {
        printf("ctx=%dn",dev->ctx);
        /initialized before/
        WM_HAL_I2C_TRACE_FAIL();
        return WM_ERR_ALREADY_INITED;
    }//在init函数传参的wm_hal_i2c_dev.ctx=NULL;
函数已经赋值为空了但是为什么printf出来的是2啊
ctx=2

352b200e0520028d1a2c4430708f63a3.png

查看更多

关注者
0
被浏览
29
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览