This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2210:函数调用错误

Guru**** 2391415 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/612309/ccs-msp430g2210-function-calling-error

器件型号:MSP430G2210

工具/软件:Code Composer Studio

我编写了一个用于 softi2c 的简单代码。 初始化、启动和发送字节工作正常。 直到我将发送字节代码打包到函数中。
如果 SEND 字节函数不是单独进行的,而是粘贴在 main()中,则它有效,并且 A0被成功发送。
但是、一旦我将其打包到函数中、我就会遇到以下错误:

错误#148:声明与"void i2c_send_Byte()"不兼容

CCSv5

#include "msp430g2210.h"

#define SDA BIT2
#define SCL BIT5

void init_i2c ();
void i2c_start();
void i2c_send_BYTE (A0);

void main (void)
{
WDTCTL = WDTPW + WDTHOINIT;//停止看门狗计时器 init_i2c

();
iend_yA0


(A0);i2c (A0);i2c (A0);while (A0)/i2c (A0)/iend_start (A0) //永远等待
}

void init_i2c ()
{
P1DIR |=(SDA + SCL);//将 P2.2和 P2.3设置为输出方向
}

void i2c_start()
{
P1OUT |=(SDA + SCL);
__DELAY_CYCLES (5);
P1OUT &=~SDA; // SDA=1->0 while SCL=1
}

void i2c_send_BYTE (unsigned char byte)
{
unsigned char i、tmp; //要用于循环的变量

for (i=0;i<8;i++) //对每个位重复执行
{
P1OUT &=~SCL;
_DELAY_CYCLES (1);
tmp=(((byte< 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="eshwar j">但一旦我将其打包到函数中,就会出现以下错误:

    错误#148:声明与"void i2c_send_Bybyte ()"问题是由以下函数原型引起的,该函数原型定义了一个具有隐式类型 int 的参数:

    void i2c_send_Byte (A0); 

    要修复错误、函数原型需要将参数类型作为函数定义。 即:

    void i2c_send_Byte (无符号字符字节); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在提出这条线程之前已经做过这一点。 我正在共享项目 zip 以了解更多信息
    10 KB
    drive.google.com/open
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Eshwar、

    按照 Chester 的建议、如下面第13行中所示、更改 i2c_send_BYTE 的函数原型 应该可以修复错误。

    void i2c_send_Byte (无符号字符字节);