叁柒子-6137 发表于 2023-12-8 12:15:56

为什么intrins.h会编译出错?

求教,为什么在intrins.h中会出现编译出错?
以下是错误信息:
Rebuild target 'Target 1'
compiling main.c...
PPM.h(6): error C132: '_PPM_3V3SW': not in formal parameter list
PPM.h(6): error C141: syntax error near 'void'
PPM.h(7): error C132: '_PPM_CHGSW': not in formal parameter list
PPM.h(7): error C141: syntax error near 'void'
C:\Keil_v5\C51\Inc\intrins.h(19): error C132: '_PPM_USBOUTSW': not in formal parameter list
C:\Keil_v5\C51\Inc\intrins.h(19): error C141: syntax error near 'extern'
C:\Keil_v5\C51\Inc\intrins.h(19): error C132: '__nop_': not in formal parameter list
C:\Keil_v5\C51\Inc\intrins.h(20): error C127: '__testbit_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(21): error C127: '__cror_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(22): error C127: '__iror_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(23): error C127: '__lror_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(24): error C127: '__crol_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(25): error C127: '__irol_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(26): error C127: '__lrol_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(27): error C127: '__chkfloat_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(33): error C127: '__push_': invalid storage class
C:\Keil_v5\C51\Inc\intrins.h(34): error C127: '__pop_': invalid storage class
main.c(10): error C244: 'sta_chg': can't initialize, bad type or class
main.c(10): error C132: 'sta_chg': not in formal parameter list
main.c(11): error C244: 'sta_on': can't initialize, bad type or class
main.c(11): error C132: 'sta_on': not in formal parameter list
main.c(12): error C244: 'sta_batavail': can't initialize, bad type or class
main.c(12): error C132: 'sta_batavail': not in formal parameter list
main.c(13): error C244: 'sta_12Vavail': can't initialize, bad type or class
main.c(13): error C132: 'sta_12Vavail': not in formal parameter list
main.c(14): error C244: 'sta_USBavail': can't initialize, bad type or class
main.c(14): error C132: 'sta_USBavail': not in formal parameter list
main.c(15): error C244: 'sta_lowbat': can't initialize, bad type or class
main.c(15): error C132: 'sta_lowbat': not in formal parameter list
main.c(17): error C244: 'prevsta_chg': can't initialize, bad type or class
main.c(17): error C132: 'prevsta_chg': not in formal parameter list
main.c(18): error C244: 'prevsta_on': can't initialize, bad type or class
main.c(18): error C132: 'prevsta_on': not in formal parameter list
main.c(19): error C244: 'prevsta_batavail': can't initialize, bad type or class
main.c(19): error C132: 'prevsta_batavail': not in formal parameter list
main.c(20): error C244: 'prevsta_12Vavail': can't initialize, bad type or class
main.c(20): error C132: 'prevsta_12Vavail': not in formal parameter list
main.c(21): error C244: 'prevsta_USBavail': can't initialize, bad type or class
main.c(21): error C132: 'prevsta_USBavail': not in formal parameter list
main.c(22): error C244: 'prevsta_lowbat': can't initialize, bad type or class
main.c(22): error C132: 'prevsta_lowbat': not in formal parameter list
main.c(24): error C244: 'status': can't initialize, bad type or class
main.c(24): error C132: 'status': not in formal parameter list
main.c(26): error C244: 'isda': can't initialize, bad type or class
main.c(26): error C132: 'isda': not in formal parameter list
main.c(27): error C244: 'isma': can't initialize, bad type or class
main.c(27): error C132: 'isma': not in formal parameter list
main.c(28): error C244: 'addr': can't initialize, bad type or class
main.c(28): error C132: 'addr': not in formal parameter list
main.c(31): error C132: 'GPIO_Init': not in formal parameter list
main.c(31): error C141: syntax error near '{'
main.c(32): error C136: 'P0M0': 'void' on variable
main.c(32): error C132: 'P0M0': not in formal parameter list
main.c(32): error C136: 'P0M1': 'void' on variable
main.c(32): error C132: 'P0M1': not in formal parameter list
main.c(33): error C136: 'P1M0': 'void' on variable
main.c(33): error C132: 'P1M0': not in formal parameter list
main.c(33): error C136: 'P1M1': 'void' on variable
main.c(33): error C132: 'P1M1': not in formal parameter list
main.c(34): error C136: 'P2M0': 'void' on variable
main.c(34): error C244: 'P2M0': can't initialize, bad type or class
main.c(34): error C136: 'P2M0': 'void' on variable
main.c(34): error C132: 'P2M0': not in formal parameter list
main.c(34): error C244: 'P2M1': can't initialize, bad type or class
main.c(34): error C132: 'P2M1': not in formal parameter list
main.c(35): error C132: 'P3M0': not in formal parameter list
main.c(35): error C141: syntax error near '|='
main.c(35): error C132: 'P3M1': not in formal parameter list
main.c(39): error C132: 'I2C_Init': not in formal parameter list
main.c(39): error C141: syntax error near '{'
main.c(40): error C141: syntax error near 'unsigned'
main.c(41): error C141: syntax error near 'unsigned'
main.c(42): error C141: syntax error near 'unsigned'
main.c(43): error C141: syntax error near 'unsigned'
main.c(44): error C244: 'EA': can't initialize, bad type or class
main.c(44): error C132: 'EA': not in formal parameter list
main.c(45): error C141: syntax error near '}'
compiling Delayms.c...
compiling ADC.c...
compiling PPM.c...
Target not created.
Build Time Elapsed:00:00:01

白开水1233 发表于 2023-12-8 15:10:32

看你报的这个错不像是包含INTRINS这个头文件造成的,是不是还有其他关键头文件没包含进来,截个图上来看看

叁柒子-6137 发表于 2023-12-8 23:49:02

白开水1233 发表于 2023-12-8 15:10
看你报的这个错不像是包含INTRINS这个头文件造成的,是不是还有其他关键头文件没包含进来,截个图上来看看 ...

谢谢!

白开水1233 发表于 2023-12-9 08:51:48

叁柒子-6137 发表于 2023-12-8 23:49
谢谢!

先试着把intrins这个头文件放在STC8h之后,在调用其他头文件,如果你这个程序不是很重要的话就打包上来,一起分析

叁柒子-6137 发表于 2023-12-9 08:58:18

麻烦帮忙看一下,谢谢大佬

叁柒子-6137 发表于 2023-12-9 09:16:27

白开水1233 发表于 2023-12-9 08:51
先试着把intrins这个头文件放在STC8h之后,在调用其他头文件,如果你这个程序不是很重要的话就打包上来, ...

另附电路原理图

gentleman 发表于 2023-12-9 12:13:25

这一堆加;






叁柒子-6137 发表于 2023-12-9 17:04:05

gentleman 发表于 2023-12-9 12:13
这一堆加;

问题解决了,谢谢指教!

嵌入式之路 发表于 2023-12-9 18:57:26

像这种出问题的话,如果你觉得是你的库问题的话, 你就逐个删除库引用,然后检查哪一个报错就好了

白开水1233 发表于 2023-12-10 08:13:26

PPM_H 头文件里函数声明需要加;
Main函数第122行if(sta_USBavail == 1)应去掉;
Main函数第176行status = (sta_chg << 3) | (sta_batavail << 2) | (sta_12Vavail << 1) | (sta_USBavail);
应改成status = (sta_chg << 3) | |(sta_batavail << 2) | |(sta_12Vavail << 1) || (sta_USBavail);
这个是条件或得用||,位或用|
另外这一行sta_chg,sta_batavail,sta_12Vavail,sta_USBavail这几个你定义的是布尔变量,无法执行左右移操作,执行左右移必须的是char,long,int以上的字符。
你把这行屏蔽了就什么问题都没有了
页: [1] 2
查看完整版本: 为什么intrins.h会编译出错?