函数传参, 代码 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, &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
被浏览
37
0 个回答
暂无答案, 快来添加答案吧

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览