OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3211|回复: 3

keil的条件编译出错了,怎么回事?

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-11-6
在线时间
41 小时
发表于 2020-3-26 19:08:59 | 显示全部楼层 |阅读模式
1金钱
#define delay_OS_TICKS_PER_SEC        configTICK_RATE_HZ
#define SYSCLK                 72
#if  Use_OS >= 1
#define RELOADTICKS (SYSCLK/8)*(1000000/delay_OS_TICKS_PER_SEC)   //重装载值
#endif
#if  RELOADTICKS >= 1<<24
#error Value illegal: delay_OS_TICKS_PER_SEC or SYSCLK
#endif
编译错误报告:
*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'D:\keil\ARM\ARMCC\Bin'
compiling sys.c...
Code\sys\sys.c(79): error:  #18: expected a ")"
          #if  
ELOADTICKS >= 1<<24
Code\sys\sys.c(79): error:  #39: division by zero
          #if  
ELOADTICKS >= 1<<24
Code\sys\sys.c: 0 warnings, 2 errors
"Code\sys\sys.c" - 2 Error(s), 0 Warning(s).
怎么回事呀,我在C++里面都没问题,在keil里面就报错

最佳答案

查看完整内容[请看2#楼]

找到原因了,由于FreeRTOS的configTICK_RATE_HZ定义为#define configTICK_RATE_HZ ( ( TickType_t ) 200 ) 不是一个常数,导致条件编译出错
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-11-6
在线时间
41 小时
 楼主| 发表于 2020-3-26 19:09:00 | 显示全部楼层
找到原因了,由于FreeRTOS的configTICK_RATE_HZ定义为#define configTICK_RATE_HZ                          ( ( TickType_t ) 200 )
不是一个常数,导致条件编译出错
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-3-27 00:58:06 | 显示全部楼层
双击看错误点。
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-11-6
在线时间
41 小时
 楼主| 发表于 2020-3-27 09:21:32 | 显示全部楼层
本帖最后由 StrangeMan 于 2020-3-27 09:25 编辑

它报错说 #if  RELOADTICKS >= 1<<24  这句有问题,可怎么看也没问题呀,
RELAOTICKS是这样定义的#define RELOADTICKS (SYSCLK/8)*(1000000/delay_OS_TICKS_PER_SEC)   //重装载值,SYSCLK和delay_OS_TICKS_PER_SEC都是常数,总的定义是这样
2345截图20200327092345.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 15:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表