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:MSP432编译、包括 MAP_

Guru**** 2615685 points

Other Parts Discussed in Thread: MSP432WARE, MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/668755/ccs-msp432p401r-msp432-compilation-including-map_

器件型号:MSP432P401R

工具/软件:Code Composer Studio

我正在尝试编译 MSP432程序。 我已经下载了 MSP432Ware 并在"Project Properties"中添加了指向它的链接

C:\ti\MSP\MSPWare_3_50_00_02\driverlib\driverlib\MSP432P4xx

第一个错误位于以下模块中。 请注意、第一个"while"是第245行。 我可能会做一些愚蠢的事情。

 Driverlib 中的 void CONFIG_CLOCK48MHZ (void)//SMCLK CONFIGURATION

   while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY))();            //将 Vcore 更改为1以支持48MHz
   PCM->CTL0 = PCM_CTL0_KEY_VAL | PCM_CTL0_AMR_1;         //正确地从当前电源状态转换到 VCORE 电平1
   while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY))();
   MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_PJ、
   GPIO_PIN3 | GPIO_PIN4、GPIO_PRIMARY_MODULE_FUNCTION);  //用于外设/晶体的引脚
//   map_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);    //需要一个引脚来观察 MCLK??
   cs_setExternalClockSourceFrequency (32000、48000000);
//   MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);               // VCORE 设为1以支持48MHz 频率
   MAP_FlashCtl_setWaitState (FLASH_BANK0、1);             //使用较新的器件时可能需要更少的等待状态。 检查
   MAP_FlashCtl_setWaitState (FLASH_BANK1、1);
   CS_startHFXT (false);                                   //在非旁路模式下启动 HFXT 而不超时
   MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_clock_divider _1);//将 MCLK 初始化为 HFXT (有效48MHz)
   MAP_CS_initClockSignal (CS_SMCLK、CS_HFXTCLK_SELECT、CS_CLOCK_DEVIDER_4);// 12MHz


出现以下错误:

>>编译失败
subdir_rules.mk:9:目标'main.obj'的配方失败
"../main.c"、第245行:错误#29:期望表达式
"./main.c"、第247行:备注#1528-D:(ULP 3.1)使用 PCM_CTL1_PMR_BUSY 检测到的标志轮询。 建议使用一个与进入 LPMx 和 ISR 组合的中断
"../main.c"、第247行:错误#29:需要表达式
"./main.c"、第248行:警告#225-D:函数"MAP_GPIO_setPeripheralModuleFunctionOutputPin"隐式声明
以及后续模块中的更多错误。

由于我不熟悉 MSP432 driverlib、我不知道第245行缺少什么表达式。 此外、我想我需要做更多的事情来使"MAP_"正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉... 与此模块相关的错误更多、因此存在根本错误:
    subdir_rules.mk:9:目标'main.obj'的配方失败
    "../main.c"、第245行:错误#29:期望表达式
    "../main.c"、第247行:错误#29:需要表达式
    "./main.c"、第248行:警告#225-D:函数"MAP_GPIO_setPeripheralModuleFunctionOutputPin"隐式声明
    "./main.c"、第248行:错误#20:标识符"GPIO_PORT_PJ"未定义
    "./main.c"、第249行:错误#20:标识符"GPIO_PIN3"未定义
    "./main.c"、第249行:错误#20:标识符"GPIO_PIN4"未定义
    "./main.c"、第249行:错误#20:标识符"GPIO_primary_module_function"未定义
    "./main.c"、第251行:警告#225-D:隐式声明的函数"CS_setExternalClockSourceFrequency"
    "./main.c"、第253行:警告#225-D:隐式声明函数"map_FlashCtl_setWaitState"
    "./main.c"、第253行:错误#20:标识符"flash_BANK0"未定义
    "./main.c"、第254行:错误#20:标识符"flash_bank1"未定义
    "./main.c"、第255行:警告#225-D:函数"CS_startHFXT"隐式声明
    "./main.c"、第256行:警告#225-D:隐式声明函数"MAP_CS_initClockSignal"
    "./main.c"、第256行:错误#20:标识符"CS_MCLK"未定义
    "./main.c"、第256行:错误#20:标识符"CS_HFXTCLK_SELECT"未定义
    "./main.c"、第256行:错误#20:标识符"CS_clock_divider _1未定义
    "./main.c"、第257行:错误#20:标识符"CS_SMCLK"未定义
    "./main.c"、第257行:错误#20:标识符"CS_clock_divider _4"未定义
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将包含路径指向 driverlib 头文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    > while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY))(); //将 Vcore 更改为1以支持48MHz

    我可能被这里的字体所迷惑、但这些字体看起来像圆括号。 我猜他们的意图是大括号。 尝试:

    > while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY)){} //将 Vcore 更改为1以支持48MHz

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

    一些发现:

    1.当我将新的"include"指针放入项目属性时、我使用了"MSPWare"、但我应该使用"MSP432Ware"。 包括正确的搜索路径后、更多的事情开始工作。 很抱歉让任何人对此感到困扰。

    当然、我还需要在         main.c 中添加#include "driverlib.h"      。

    2."while"语句有正确的括号,但结尾的"()"显然是非法的,我总是在用于等待终止某些进程的"while"语句中使用。 因此、当我删除末尾的"()"时、编译的语句没有错误。

    3.下一个需要您的专业知识的错误是

           SCB_SCR &=~SCB_SCR_SLEEPONEXIT;                   //从 ISR 退出时从睡眠状态唤醒

    错误消息为:
    "./main.c"、第426行:错误#20:标识符"SCB_SCR"未定义
    "./main.c"、第426行:错误#20:标识符"SCB_SCR_SLEEPONEXIT"未定义

    因此,我想其他一些包含路径也必须使用.... 有什么建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这看起来像"经典"语法、其余的使用 CMSIS。 尝试:

    > SCB->SCR &=~SCB_SCR_SLEEPONEXIT_MSK;//从 ISR 退出时唤醒

    (我从示例(SLAC698D) UART_03中删除了这一点。 我实际上并不记得所有这些名称。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    布鲁斯······ 你做到了! 它就像魔法一样。
    我能不能再麻烦你一遍、然后我需要几天时间来清除所有的小错误:
    PMMCTL0 = PMMPW | PMMSWPOR; //软件 POR
    我想这必须仅对 MSP430有效、因为编译器反对它。
    这与 MSP432等效:
    ResetCtl_initiateSoftReset (void);
    显然有许多命令可用于执行 S/W POR。
    非常感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "PMMCTL0 = PMMPW | PMMSWPOR;// SW POR"

    它用于 PWM 外设、我认为 msp432没有这种外设。

    此外、这些模块的编程方法因工具链而异、有时也因工具链而异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    布鲁斯······ 你做到了! 它就像魔法一样。
    我能不能再麻烦你一遍、然后我需要几天时间来清除所有的小错误:
    PMMCTL0 = PMMPW | PMMSWPOR; //软件 POR
    我想这必须仅对 MSP430有效、因为编译器反对它。
    这与 MSP432等效:
    ResetCtl_initiateSoftReset (void);
    显然有许多命令可用于执行 S/W POR。
    非常感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    程序现在会编译、但不会链接。 我有两个主要问题。
    1.大部分问题与我在这个主题的第一篇帖子中显示的模块有关。


    未定义 第一个参考
    符号 文件中
    ------ --------
    CS_initClockSignal /main.obj
    cs_setExternalClockSourceFrequency /main.obj
    CS_startHFXT /main.obj
    FlashCtl_setWaitState /main.obj
    GPIO_setPeripheralModuleFunctionOutputPin ./main.obj
    ResetCtl_initiateSoftReset /main.obj

    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口1。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。

    2.每个端口都收到以下警告
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口1。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。

    但我有一个模块正在初始化所有端口。 下面是处理端口1的部分(据我所知、所有这些代码都在 MSP430上工作)。
    P1->DIR &=~BIT3;
    P1->REN |= BIT3;
    P1->OUT |= BIT3;
    P1->IES &=~BIT3;
    P1->IE |= BIT3;
    P1->DIR &=~BIT2;
    P1->SEL1 &=~BIT2;
    P1->SEL0 |= BIT2;
    P1->DIR |=(BIT0 | BIT1);
    P1->OUT &=~(BIT0 | BIT1);
    //未使用的引脚
    P1->DIR |=( BIT4 + BIT4 + BIT6 + BIT4);//使用= 1.0/1.1/1.2/1.3
    P1->OUT &=~( BIT4 + BIT4 + BIT6 + BIT7);

    顺便说一下、我仍然必须检查 MSP430FR5994 Launchpad 上使用的所有引脚是否仍可用于 MSP432P401R Launchpad 上... 在将可执行文件下载到 MSP432 Launchpad 之前、我将进行相应调整。

    如果有人能在链接中找到这些错误的原因、我将不胜感激。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还可以。。。 请记住。 我已经放弃了这个模块的 driverlib 并使用寄存器级指令来实现它。 我将在适当时候弄清楚 GPIO 出了什么问题。

    谢谢。