RTT_逍遥
RTT_逍遥 - 认证专家
我欲乘风

注册于 2 years ago

回答
172
文章
6
关注者
9

使上有问题吗?有问题可以提出来。代码有些可能是公司的东西,有可能不方便完全开源

这个问题是如何产生的呢??

看上去RTT_ROOT这个变量没有设置好,可以试试使用cmd scons --verbose
看下具体内容。

这个宏RT_USING_ADC这个宏有没有开,以及adc.c这个文件在不在工程里面

IIC消息的结构体:

struct rt_i2c_msg
{
    rt_uint16_t addr;
    rt_uint16_t flags;
    rt_uint16_t len;
    rt_uint8_t  *buf;
};

addr预留了16bit的数据,可以存放16bit的地址,传下来之后,由flags里面的ADDR_10BIT这个标志位来区分16bit还是8bit。

#define RT_I2C_WR                0x0000
#define RT_I2C_RD               (1u << 0)
#define RT_I2C_ADDR_10BIT       (1u << 2)  /* this is a ten bit chip address */
#define RT_I2C_NO_START         (1u << 4)
#define RT_I2C_IGNORE_NACK      (1u << 5)
#define RT_I2C_NO_READ_ACK      (1u << 6)  /* when I2C reading, we do not ACK */
#define RT_I2C_NO_STOP          (1u << 7)

由底层驱动决定如何分辨,之后通过调用HAL层传下去。

建议用一些主流的keil iar之类的。这样不会局限于stm32。可能bug也少一些

看下board.c里面heap的首地址和尾地址。然后看下是否是空间不够用了

systick典型值是1ms。如果想要快速验证的话可以试下把10ms改成1ms。如果再小的话,建议使用高精度定时器

可能th1的线程的任务栈有些小了,试试看把512加大看看。

th1 = rt_thread_create("th1", th1_entry,RT_NULL,512, 21, 0);

检查一下

./../../../arm-none-eabi/lib/armv7e-m/fpu\libg.a

这个lib里面是否有调用libc相关的函数

#define I2C_BUS    "i2c1"

int pcf8574_sample(void)
{
    rt_uint8_t value;
    pcf8574_device_t dev = RT_NULL;
    
    dev = pcf8574_init(I2C_BUS, RT_NULL);

从sample这里可以看到pcf8574是通过名字i2c1 来操作的,至于下面IO是怎么样的配置,由bsp在加载软件包之前就配置好的,根据drv_iic.c里面的io配置来配置。

看下工程路径 include是否包含board.h所在的目录

首先第一步,对文档中心的文档都看一遍
RT-THREAD 论坛
https://club.rt-thread.org/index.html
不太理解的可以结合视频中心的视频理解理解
https://www.rt-thread.org/page/video.html

然后就是自己找个stm32的开发板做一些实验理解理解。接下来就是找软件包多实践,多pr代码

回到
顶部

发布
问题

投诉
建议