找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1009|回复: 3
打印 上一主题 下一主题
收起左侧

求助non-address/-constant initializer这个问题怎么解决?

[复制链接]
跳转到指定楼层
#
ID:929517 发表于 2023-10-19 18:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
User\main.c(63): error C247: non-address/-constant initializer
代码如下:请问这个是什么错误,我是初学者,恳请各位指导,谢谢。
代码有写的不好的,也烦请指正,谢谢
/*固态继电器动作程序
cnt1:接通时间 cnt2:断开时间
*/
void SSR_Action(u8 cnt1, u8 cnt2)
{
  u16 temp1 = cnt1*1000;
  u16 temp2 = cnt2*1000;
  bit Heat = 1;
  static u16 a1 = temp1; static u16 a2 = temp2;
  
  if(Heat)
  {
    SSR_CTRL = 1;
    a1--;
    if(a1 == 0)
    {
     Heat = 0;
     a2 = temp2;
    }
  }
  if(Heat == 0)
  {
    SSR_CTRL = 0;
    a2--;
    if(a2 == 0)
    {
     Heat = 1;  
     a1 = temp1;
    }
  
  }  

}  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

板凳
ID:929517 发表于 2023-10-19 22:17 来自手机 | 只看该作者
chxelc 发表于 2023-10-19 19:25
用static定义的变量称为静态变量。静态变量在程序调用结束后其占用的内存单元并不被释放(其值保持不变)。把 ...

这些大佬,问题解决了,同时我改了代码,--改成了++,这也问题应该是 static变量必须赋初值是一个具体的值吧,而不是不确定的值
回复

使用道具 举报

沙发
ID:929517 发表于 2023-10-19 22:00 来自手机 | 只看该作者
chxelc 发表于 2023-10-19 19:25
用static定义的变量称为静态变量。静态变量在程序调用结束后其占用的内存单元并不被释放(其值保持不变)。把 ...

调用子函数必须添加啊 不然下回进来重新赋值开始啊
回复

使用道具 举报

楼主
ID:712097 发表于 2023-10-19 19:25 | 只看该作者
用static定义的变量称为静态变量。静态变量在程序调用结束后其占用的内存单元并不被释放(其值保持不变)。把程序内第4行的两个static去掉,就不会报错了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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