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.

[参考译文] TMS570LS0432:"./source/sys_main.c 和 quot;、第95行:警告#169-D:类型&quot 的参数;unsigned char *和 quot;与类型&quot 的参数不兼容;char *__ restrict__和 quot;

Guru**** 2535790 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LS0432, SEGGER

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1033252/tms570ls0432-source-sys_main-c-line-95-warning-169-d-argument-of-type-unsigned-char-is-incompatible-with-parameter-of-type-char-__restrict__

器件型号:TMS570LS0432
主题中讨论的其他部件:HALCOGENSEGGER

您好!  

我正在尝试使用电位器获取模拟值、并将其转换为 PWM。 我想使用 PWM 来改变 LED 的亮度、并读取终端中电位计的电压值。  

我尝试获取浮点"value"并将其转换为字符串值"command"。 但我将得到 第95行:警告#169-D:"unsigned char *"类型的参数与"char *__ restrict____"类型的参数不兼容。

您可以在 Code Composer 上检查以下代码吗?

#include "sys_common.h"

/*用户代码开始(1)*/
#include "het.h"
#include "adc.h"
#include "sci.h"
#include "system.h"
#include "stdlib.h"
#include "stdio.h"
#include "string。

unsigned char 命令[8];

void main (void)


adcData_t ADC_DATA;//ADC 数据结构。
adcData_t * adc_data_ptr =&adc_data;//adc 数据指针。
unsigned int 值;// ADC 值存储在此变量中。
浮动电位计;//电位计值作为电压。

hetInit();//Initialize the HET module。
adcInit();//初始化 ADC 模块。
sciInit();

while (1)//ADC 转换循环。

adcStartConversion (adcREG1、1U);//在 ADC 1上开始转换。
while (!adcIsConversionComplete (adcREG1、1U));//等待 ADC 转换
adcGetData (adcREG1、1U、ADC_DATA_PTR);//将转换存储到 ADC 指针
值=(unsigned int) adc_data_ptr ->值;//
POT =值*(3.3 /4095);
POP=sprintf (命令、"%f"、值);
sciSend (scilinREG、pot、command);

sciSend (scilinREG、2、(unsigned char*)"\r\n");
pwmStart (hetRAM1、pwm0);

如果(POT > 0){
pwmSetDuty(hetRAM1, pwm0, 1U*POT*30.303);

其他
pwmSetDuty (hetRAM1、pwm0、0U);

谢谢、

Ozden  

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

    您好, Ozden,

    哪条指令是 第95行?

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

    POP=sprintf (命令、"%f"、值);

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

    int sprintf (char * str、const char * format、... );

    sprintf 需要 char *字符串而不是无符号字符。 char 是一种与有符号 char 和无符号 char 不同的类型。

    解决方法是使用正确的类型:

    1.将类型更改为 char 命令[8]

    2. 将命令转换为 sprintf  调用中的 char

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

    现在我看到 此错误#169-D 类型"char *"的参数与类型"uint8 *"的参数不兼容。 这就是我在代码中使用 unsigned char 类型的原因。 该错误显示了指令  sciSend (scilinREG、pot、command)的第96行;

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

    您可以使用第二种方法来解决问题:  

    sciSend (scilinREG、pot、(uint8*)命令);

    sciSend (scilinREG、pot、(uint8*)&command[0]);

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

    好的、没有错误;但是、我无法从终端获取任何值。 此外、板上的 LED 始终处于开启模式。 如何解决此问题? 如果我删除这三行代码、代码将在电路板上工作。 非常感谢您的关注。

    POP=sprintf (命令、"%c"、值);
    sciSend (scilinREG、pot、(uint8*)命令);
    sciSend (scilinREG、2、(unsigned char*)"\r\n");

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

    您好!

    sprintf()将字符串打印到 CCS 控制台。

    sciSend()将字符发送到 PC 上的终端。  

    sciSend (scilinREG、sizeof (command)、(uint8*)命令);或 sciSend (scilinREG、pot、(uint8*)命令); 应该起作用。 您是否在终端中使用相同的波特率和停止位的数量?

    您可以在 HAlCoGen 帮助示例中尝试 SCI 示例:

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

    我已经在终端中使用了相同的波特率和停止位的数量、但是当我添加这三行代码时、代码无法在电路板上工作、LED 始终开启模式、也无法从终端读取值。  

    我查看过该代码、但它没有帮助。  

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

    您好、Ozden、

    您是否已解决问题?  

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

    不幸的是、我没有。  

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

    这是我使用 TMS570LS0432 Launchpad 进行的测试。 可以在终端上显示消息。

    在 LS0432 Launchpad 上、SCI_TX 和 SCI_RX 与 JTAG 信号一起通过 USB 连接到主机(PC)。

    如果 SCI 信号未连接到 PC、则不会向终端发送消息。

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

    即时消息、使用 SEGGER J-LINK 调试器。  

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

    JLink 调试器不包含 SCI 信号。 要在 PC 终端上显示 UART 消息、您需要将 SCI 信号连接到 PC (RS232或 USB)。

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

    感谢您帮助我找到主要问题