【问题标题】:Reentrancy is not allowed in micro Cmicro C 中不允许重入
【发布时间】:2020-02-23 20:33:31
【问题描述】:

我在使用 micro C 编程 pic16f77a 微控制器时遇到了一个奇怪的错误

1- 64 365 Reentrancy is not allowed: function 'I2C1_Repeated_Start' called from two threads __Lib_I2C_c34.c
2- 77 365 Reentrancy is not allowed: function 'SPI1_Write' called from two threads __Lib_SPI_c345.c

我没有在我的代码中使用任何这些函数。我只是写了一个代码依赖 timer0 ,那么问题出在哪里?

【问题讨论】:

  • 发布整个构建日志,包括命令调用,以便我们查看您是如何调用编译器的以及确切的诊断信息。对日志使用代码标记以保留格式和换行符。
  • 我猜你在 ISR 和主循环中调用了相同的函数。
  • 您是否在使用库的任何 I²C 和 SPI 函数?
  • @Mike 我没有把它们称为蚂蚁,也不包括 I2C 或 SPI 库。
  • @thebusybee 不,我没有

标签: embedded pic


【解决方案1】:

不确定 micro C,但在 xc8 中,这与已编译堆栈与“正常”堆栈有关。您不能使用已编译的堆栈重入。 Xc8 在这种情况下再次生成警告,并创建函数的第二个副本。

Edit(add):错误消息中的函数名很可能来自MCC。

【讨论】:

  • 我很抱歉,但我不知道什么是 MCC,我不知道当我没有使用任何这些函数或库时这个错误是如何出现的
  • 然而,这并不是真正的问题。问题是链接他不是故意使用的代码。
猜你喜欢
  • 2011-07-17
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多