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/MSP432P401R:MSP432P401R

Guru**** 2394305 points
Other Parts Discussed in Thread: LM35

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/793239/ccs-msp432p401r-msp432p401r

器件型号:MSP432P401R
主题中讨论的其他器件:LM35

工具/软件:Code Composer Studio

大家好,我是一名工程学生,在我的最终项目上遇到了问题。我在从111-114行开始运行代码时收到了4个打字错误29个“期待表达式”错误,这些错误是针对 ADC 的。 如果有人可以查看我随附的代码、请告诉我您的想法。

谢谢、  

            一位非常感谢的工程学生。

CCS 8源代码  

#include

#include

#include //驱动程序库

#define UC_PORT    P4OUT

#define UC_PORT_DIR P4DIR

#define ADC10CTL0

#define ADC10CTL1

#define ADC10AE0

// LCD 引脚分配

#define LCD_EN      BIT2

#define LCD_RS      BIT3

#define LCD_DATA  BIT4 | BIT5 | BIT6 | BIT7

#define LCD_D0_OFFSET 4 // BIT4上的 D0,所以它是4

#define LCD_MASK  LCD_EN | LCD_RS | LCD_DATA

 

//将 P1.1连接到 LM35温度传感器输出

#define TEMP_IN    BIT1

 

char temperature _string[4];

短路温度= 0;

 

void lcd_reset ()

uC_port = 0x00;

_DELAY_CYCLES (20000);

 

uC_port =(0x03 << LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

_delay_cycles (10000);

 

uC_port =(0x03 << LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

_DELAY_CYCLES (1000);

 

uC_port =(0x03 << LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

_DELAY_CYCLES (1000);

 

uC_port =(0x02 << LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

_DELAY_CYCLES (1000);

 

 

void lcd_cmd (char cmd)

//发送上半字节

uC_port =((((cmd >> 4)& 0x0F)<< LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

 

//发送低位半字节

uC_port =((cmd & 0x0F)<< LCD_D0_offset)| LCD_EN;

uC_port &=~LCD_EN;

 

_DELAY_CYCLES (4000);

 

void lcd_data (无符号字符 dat)

//发送上半字节

uC_port =((((dat >> 4)和0x0F)<< LCD_D0_offset)| LCD_EN | LCD_RS);

uC_port &=~LCD_EN;

 

//发送低位半字节

uC_port =(((dat 和0x0F)<< LCD_D0_offset)| LCD_EN | LCD_RS);

uC_port &=~LCD_EN;

 

__DELAY_CYCLES (4000);//较小的延迟可能会导致缺少字符显示

 

 

void lcd_init ()

uC_PORT_DIR = LCD_MASK;    // LCD 连接的输出方向

 

LCD_RESET();        //调用 LCD 复位

 

LCD_cmd (0x28);      // 4位模式–2行–5×7字体。

LCD_cmd (0x0C);      //不显示光标–不闪烁。

LCD_cmd (0x06);      //自动递增–无显示移位。

LCD_cmd (0x80);      //地址 DDRAM、0偏移80h。

LCD_cmd (0x01);    //清除屏幕

 

 

void display_line (char *行)

while (*行)

LCD_DATA (*线++);

 

void display_temperature (char *行、int len)

while ((3-len)>0)

LCD_DATA ('');

while (len){

如果(*行)

LCD_DATA (*线++);

LCD_DATA (0xDF);//度数符号

LCD_DATA ('C');

 

void initadc (void)

 

//初始化10位 ADC

 

  uC_PORT_DIR &=~TEMP_IN;//传感器输出的输入方向

 

ADC10CTL0 |= ADC10ON;

ADC10CTL1 |= INCH_1_ADC10SSEL_1_|CONSEQ_1;

ADC10AE0 |= BIT0 | BIT1;

ADC10CTL0 |= ENC|ADC10SC;

 

void setup(){

 

WDTCTL = WDTPW + WDTHOLD;  //停止看门狗计时器

 

//初始化 LCD

lcd_init();

//初始化 ADC

initadC();

 

LCD_cmd (0x80);//选择第一行(0x80 + addr)–这里的 addr = 0x00

display_line ('Temp');

LCD_cmd (0xce);//选择第二行(0x80 + addr)–这里的 addr = 0x4e

 

void loop(){

Int A1;

//测量温度

温度=(analogRead (A1)*35)/100;

 

//显示当前温度

LCD_cmd (0xcb);//选择第二行(0x80 + addr)–这里的 addr = 0x4b

itoa (temperature、temperature _string、10);

display_temperature (temperature _string、3);

__DELAY_CYCLES (50000);      // 0.5sec 测量周期

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ADC10的定义是什么? 我想您已经汇集了来自具有10位 ADC 的早期 MSP430器件的一些代码。 我建议查看此处的寄存器级示例:

    dev.ti.com/.../node
    dev.ti.com/.../node

    请注意、命名约定使用 CMSIS 结构、而不是传统定义。 此外、请使用插入代码功能或附加文件。

    Chris