当前位置: 首页 > news >正文

模板网站建设青岛网站建设的参考书籍

模板网站建设青岛,网站建设的参考书籍,天津市建设工程交易网,WordPress自己写主题文章目录 前言开始修复 前言 我发现,好像很多芯片使用最新的驱动包5.1.0都会有报错和警告(5以上好像都有些问题),于是参考多方资料,终于修改成功。 开始修复 接着点击重新构建项目会有如下报错 我们定位到第一个报错…

文章目录

  • 前言
  • 开始修复


前言

我发现,好像很多芯片使用最新的驱动包5.1.0都会有报错和警告(5以上好像都有些问题),于是参考多方资料,终于修改成功。


开始修复

在这里插入图片描述
接着点击重新构建项目会有如下报错
在这里插入图片描述
我们定位到第一个报错
在这里插入图片描述
先不管错误信息,这个好像有点不准,看官方手册,将变量RT_WEAK 改成了小写,而这里没有更改,那我们改成小写再编译一下。

5.0.0
RT_WEAK 改为 rt_weak
ALIGN 改为 rt_align
新增 driver.c 文件
scheduler.c 分为 scheduler_mp.c(SMP 相关) 和 scheduler_up.c(单核)

这里我们要用重新构建,也就是锤头图标那一个,。
在RT-Thread Studio中,构建(Build)和重新构建(Rebuild)是两个不同的操作,它们的主要区别在于执行的操作范围和目的。
1. 构建(Build):
构建操作会编译整个工程,但不会重新编译那些没有发生变化的文件。这意味着,如果某些源文件或头文件没有被修改,构建过程会跳过这些文件的编译,从而节省时间和资源。构建操作通常用于在开发过程中,当你修改了部分代码并希望快速看到结果时。
2. 重新构建(Rebuild):
重新构建操作会强制编译整个工程,无论文件是否发生变化。这意味着,它会重新编译所有的源文件和头文件,确保生成的可执行文件是最新的。重新构建操作通常用于以下情况:

  • 初次编译整个工程
  • 需要确保所有文件都是最新版本时
  • 需要清除旧的编译结果,避免潜在的编译错误
    排查警告需要用重新构建,否则不会显示警告,结果如下
    在这里插入图片描述
    可以看到错误信息没有了,只剩警告了,看警告信息,警告几乎都是函数未声明,经过我对很多函数的溯源,发现文件rtsched.h(RT_derive5.1.0\rt-thread\include\rtsched.h)里有一段预处理指令没有编译
    在这里插入图片描述
    而这里面包括了很多前面警告没有声明函数的声明,那我们通过定义__RT_KERNEL_SOURCE__或者__RT_IPC_SOURCE__宏就能编译这一段代码,于是我在rtsched.h加入了一句预定义#define __RT_KERNEL_SOURCE__,如下。
    在这里插入图片描述
    编译后发现警告大幅度减少
    在这里插入图片描述
    接着继续定位,发现这里的报错是类型不兼容
    在这里插入图片描述
    我们找到结构体rt_pin_ops的声明,然后也看一下第一个警告函数的声明
    在这里插入图片描述
static void stm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)

发现函数stm32_pin_mode第三个新参类型与rt_pin_ops定义的函数新参类型确实不同,那我们就保持一致就行。rt_base_t 与rt_uint8_t保留哪一个都行,在这里我是保留rt_pin_ops结构体的声明,改变了_stm32_pin_ops里的函数声明。应为我发现函数声明的形参需求的内存都很大,而实际都用不了,rt_pin_ops结构体的声明更加贴切。结果如下

static void stm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode)
static void stm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value)
static rt_err_t stm32_pin_attach_irq(struct rt_device *device, rt_base_t pin,rt_uint8_t mode, void (*hdr)(void *args), void *args)
static rt_err_t stm32_pin_irq_enable(struct rt_device *device, rt_base_t pin,rt_uint8_t enabled)

继续编译,警告更少了,而且还是同样问题,
在这里插入图片描述
经过查看发现,下面的返回类型不一样。经过查找发现,rt_size_t 与rt_ssize_t 类型就是有无符号的区别,这里我保留了rt_size_t ,因为这个定义使用面更广

static rt_size_t stm32_dma_transmit(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction)
rt_ssize_t (*dma_transmit)(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction);
rt_size_t  = long unsigned int
rt_ssize_t  = signed long

索引的时候会发现有两个文件serial.h与serial_v2.h都有rt_uart_ops的声明,这两个文件工程会根据使用的串口版本是v1还是v2声明其中一个,默认v1,也就是声明serial.h,那这里我们两个都该就行。
继续编译
在这里插入图片描述
#pragma GCC diagnostic ignored “-Wimplicit-fallthrough” 这行代码的用途是让 GCC 编译器忽略 switch 语句里隐式贯穿(fallthrough)所产生的警告。隐式贯穿指的是在 switch 语句中,某个 case 分支结束时没有 break 语句,从而导致程序流程直接进入下一个 case 分支。
注释掉这一句//#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"整个工程0错误0警告了
在这里插入图片描述

http://www.dtcms.com/a/570897.html

相关文章:

  • 番禺建设局网站首页怎么建个人公司网站
  • 织梦手机网站有广告位中英文网站开发公司
  • Spring-cloud 主键Eureka
  • 宜兴公司做网站高端 网站定制
  • 成都营销型网站建设推广怎么建设国外免费网站
  • 算法72. 编辑距离
  • 制作网站的软件下载金科做的网站
  • 黑龙江省建设工程招标网站外包网有哪些
  • 织梦做的网站为什么显示404临沂做网站哪里好
  • 做美食教程的网站有哪些快速排名优化推广价格
  • 本地佛山顺德网站建设外贸求购信息网
  • 专业新站整站快速排名公司windows2008 iis 网站
  • 从计数器到令牌桶:三种限流方案的落地与取舍
  • 信号与槽
  • 定制型网站建设移动网站mip
  • 网络系统管理与维护形考任务2sem优化软件选哪家
  • 小语种网站自己做网站能赚钱
  • 自己学习建设网站做老托福听力的网站
  • 设计商城网站建设服装设计参考网站
  • wordpress格式化sql串天津网络优化网站建设
  • 如何检测网站的打开速度游戏小程序开发报价
  • 网站被k原因网站设置关键字
  • VQ-VAE 代码详细解析及记录
  • 网站建设技术公司企业公示信息查询官网
  • 温州网站建设得花多少钱做自媒体挣钱的网站有哪些
  • p2p网站建设公司wordpress心情
  • pageadmin自助建站专业网页设计制作价格
  • 东莞智通人才网官方网站泉州网站公司
  • qq钓鱼网站在线生成器北京网站设计优刻
  • 诊断服务_0x10和0x11服务