完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #include #include "driver/i2c.h" #include #include // #define OLED_ADDR 0x3C // #define OLED_CMD 0 // #define OLED_DATA 1 #define porttiCK_RATE_MS portTICK_PERIOD_MS struct esp32_c3_i2c { struct rt_i2c_bus_device bus; i2c_config_t i2c_cofig; char *device_name; }; struct esp32_c3_i2c hw_i2c; static rt_err_t i2c_master_init(void) { i2c_config_t conf; conf.mode = I2C_MODE_MASTER; conf.sda_io_num = I2C_MASTER_SDA_IO; conf.sda_pullup_en = GPIO_PULLUP_ENABLE; conf.scl_io_num = I2C_MASTER_SCL_IO; conf.scl_pullup_en = GPIO_PULLUP_ENABLE; conf.master.clk_speed = 100000; hw_i2c.i2c_cofig=conf; i2c_param_config(I2C_MASTER_NUM, &conf); return i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } static rt_size_t es32c3_master_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num) { ... } static struct rt_i2c_bus_device_ops es32c3_i2c_ops = { es32c3_master_xfer, RT_NULL, RT_NULL }; int rt_hw_i2c_init(void) { i2c_master_init(); struct rt_i2c_bus_device i2c_bus_device=hw_i2c.bus; hw_i2c.device_name="i2c0"; i2c_bus_device.priv = (void *)I2C_MASTER_NUM; i2c_bus_device.timeout = 0x0fffffff; i2c_bus_device.retries = 0; i2c_bus_device.ops = es32c3_master_xfer; rt_err_t result = rt_i2c_bus_device_register( &i2c_bus_device, "i2c0"); if (result != RT_EOK) { rt_kprintf("i2c device register failed\n"); return result; } rt_kprintf("i2c device register succeeded\n"); return RT_EOK; } INIT_DEVICE_EXPORT(rt_hw_i2c_init); 不知道为什么编译的时候报这个错误 FAILED: rtthread.elf cmd.exe /C "cd . && D:\rt-thread-master\bsp\ESP32_C3\packages\tools\riscv32-esp-elf\esp-2022r1-11.2.0\riscv32-esp-elf\bin\riscv32-esp-elf-g++.exe -march=rv32imc -nostartfiles -march=rv32imc --specs=nosys.specs @CMakeFiles\rtthread.elf.rsp -o rtthread.elf && cd ." d:/rt-thread-master/bsp/esp32_c3/packages/tools/riscv32-esp-elf/esp-2022r1-11.2.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/11.2.0/../../../../riscv32-esp-elf/bin/ld.exe: esp-idf/main/libmain.a(drv_hw_i2c.c.obj): in function `rt_hw_i2c_init': D:/rt-thread-master/bsp/ESP32_C3/drivers/drv_hw_i2c.c:108: undefined reference to `rt_i2c_bus_device_register' collect2.exe: error: ld returned 1 exit status |
|
相关推荐
1个回答
|
|
出现问题的函数在最后那段当中
int rt_hw_i2c_init(void) { i2c_master_init(); struct rt_i2c_bus_device i2c_bus_device=hw_i2c.bus; hw_i2c.device_name="i2c0"; i2c_bus_device.priv = (void *)I2C_MASTER_NUM; i2c_bus_device.timeout = 0x0fffffff; i2c_bus_device.retries = 0; i2c_bus_device.ops = es32c3_master_xfer; rt_err_t result = rt_i2c_bus_device_register( &i2c_bus_device, "i2c0"); if (result != RT_EOK) { rt_kprintf("i2c device register failed\n"); return result; } rt_kprintf("i2c device register succeeded\n"); return RT_EOK; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3036 浏览 0 评论
1333 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
1112 浏览 0 评论
4600 浏览 0 评论
1818 浏览 0 评论
55359 浏览 21 评论
【参与有奖】激扬代码,千元现金!RT-Thread主题征文大赛
56976 浏览 88 评论
277378 浏览 75 评论
50673 浏览 31 评论
15965 浏览 53 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
18084 浏览 46 评论
13250 浏览 50 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-28 03:04 , Processed in 0.520177 second(s), Total 33, Slave 26 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号