607
社区成员
发帖
与我相关
我的任务
分享#define DS1_kjiHIGH { GPIO_Init_out( LL_GPIO_PIN_2); //GPIO(PIN脚,输出)
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(26): error: #79: expected a type specifier
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(26): error: #79: expected a type specifier
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(26): error: #260-D: explicit type is missing ("int" assumed)
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(26): error: #147: declaration is incompatible with "void LL_GPIO_SetOutputPin(GPIO_TypeDef *, uint32_t)" (declared at line 1020 of "..\Drivers\PY32F0xx_HAL_Driver\Inc\py32f0xx_ll_gpio.h")
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(26): error: #169: expected a declaration
LL_GPIO_SetOutputPin (GPIOA,LL_GPIO_PIN_2); } //输出高电平
..\Inc\Control.h(41): warning: #12-D: parsing restarts here after previous syntax error
这个需要怎么处理?
你问的是「社区 OpenCL和异构编程 帖子详情 keil 5 宏定义IO口问题 虎仔仔 2024-07-06」,我结合实操说几句。
先定位是哪一层的问题:环境/依赖、代码逻辑、还是模型/服务本身。编程的坑大多集中在环境版本和配置。
排查路径建议按三步走:① 用官方示例做基线复现,确认基线能跑;② 逐步替换成你的代码/数据,每步都可验证;③ 看日志里最先出现的那条报错往上溯源,别被后面的连锁报错带偏。
举个典型场景:本地跑得好好的,一上服务器就报错,多数是依赖版本或环境变量没对齐,先把两边的依赖清单和 env diff 一遍。
关键是一次只改一个变量,改完立刻跑一遍。
把报错信息和可复现的代码贴出来,能更快帮你 pinpoint。
以上是基于常见落地经验的判断,未必都对。你那边具体是什么场景/报错?评论区说下,我帮你看。
你在宏定义中遇到了一些语法错误,导致编译器无法正确解析你的代码。以下是一些可能的问题和解决方案:
{} 可能导致编译器无法正确解析。\**:如果宏定义包含多行语句,需要使用反斜杠 \ 来连接这些行。你可以通过以下方式修改你的宏定义:
使用反斜杠 \ 连接多行语句:
#define DS1_kjiHIGH do { \
GPIO_Init_out(LL_GPIO_PIN_2); /* GPIO(PIN脚,输出) */ \
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_2); /* 输出高电平 */ \
} while(0)
**避免在宏定义中使用 {}**:
如果你的宏定义只有一行,可以直接定义成一行:
#define DS1_kjiHIGH ( \
GPIO_Init_out(LL_GPIO_PIN_2), /* GPIO(PIN脚,输出) */ \
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_2) /* 输出高电平 */ \
)
以下是一个完整的宏定义示例,使用了 do-while 结构以确保宏在使用时的正确性:
#define DS1_kjiHIGH do { \
GPIO_Init_out(LL_GPIO_PIN_2); /* GPIO(PIN脚,输出) */ \
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_2); /* 输出高电平 */ \
} while(0)
do { ... } while(0)**:这种方式确保宏在任何地方都能正确使用,避免因为语句末尾的分号或其它原因导致的语法错误。\**:用来将宏定义分成多行,以提高可读性。GPIO_Init_out 和 LL_GPIO_SetOutputPin 函数的声明和定义正确。py32f0xx_ll_gpio.h。通过以上修改,你应该能够解决编译器错误,并正确定义和使用你的宏。
void LL_GPIO_SetOutputPin(GPIO_TypeDef *, uint32_t) 是此函数的原始声明。错误提示是:在参数传递声明中使用了泛化传递,调用时需要提供一个类型说明。但是,可能存在其他问题,那两个参数应该是预设的值,正常情况下不应该出问题。应该查一下两个预设值的原始定义,或许需要信息加强。
66666666