打印
[单片机芯片]

chv307,MounRiver这个环境怎么不好用啊,看看这个怎么解决?

[复制链接]
875|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shzps|  楼主 | 2022-7-17 15:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shzps 于 2022-7-17 15:09 编辑

新建一个c文件,u8,u16哪里定义?或者需要包含什么文件?

这也能错:直接使用unsigned int也错?



使用特权

评论回复
沙发
shzps|  楼主 | 2022-7-17 19:00 | 只看该作者
在main.c中都可以,在其他函数中怎么就不行。

使用特权

评论回复
板凳
ufbycd| | 2022-7-17 21:59 | 只看该作者
C语言标准化组织建议用 stdint.h 里的uint8_t uint16_t之类的类型名,而非u8 u16 .所以MCU厂商的驱动库里用的都是前者。

使用特权

评论回复
地板
zyw123456789| | 2022-7-18 10:07 | 只看该作者
shzps 发表于 2022-7-17 19:00
在main.c中都可以,在其他函数中怎么就不行。

如果在main.c中都可以,可以把main.c中用到的头文件放到function.c

使用特权

评论回复
5
WCHTech37| | 2022-7-18 11:27 | 只看该作者
您好,u8、u16 都在core_riscv.h中有定义,选中变量类型,按键F3,就可以直接跳转到定义,也可以使用C语标准中内置的uint8_t、uint_16t。您说的unsigned int 也报错,可以看下第一张图中的第一个宏定义:#define  unsigned  int  UINT16改成  #define UINT16 unsigned int 应该就没问题了。

使用特权

评论回复
6
shzps|  楼主 | 2022-7-18 13:05 | 只看该作者
自己定义的 #define UINT16 unsigned int  没问题。如果我把#include"core_riscv.h"加入自己的函数会报错,我怎么使用core_riscv.h文件:
错误如下:
12:56:39 **** 构建 of configuration obj for project TcpServer ****
make -j12 all
In file included from ../fun/function.c:10:
G:\binbin studio\gs-meter\SRC\Core/core_riscv.h:23:13: error: unknown type name 'uint64_t'
typedef __I uint64_t vuc64;  /* Read Only */
             ^~~~~~~~
G:\binbin studio\gs-meter\SRC\Core/core_riscv.h:24:13: error: unknown type name 'uint32_t'

使用特权

评论回复
评论
WCHTech37 2022-7-18 17:12 回复TA
您好,GCC在编译时是按文件来的,头文件在预处理时会被复制到源文件中,预编译过后的源文件需要有变量类型的声明或者定义,core_riscv.h中包含变量类型也是一样,您直接#include "ch32v30x.h"就可以了 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

51

帖子

0

粉丝