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/LAUNCXL-CC2640R2:云CCS编译错误-正在尝试解决问题,但需要指导

Guru**** 2609955 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/639622/ccs-launchxl-cc2640r2-cloud-ccs-compile-error---trying-to-resolve-but-need-guidance

部件号:LAUNCHLL-CC2640R2

工具/软件:Code Composer Studio

我已获取其中一个TI驱动器示例(看门狗),并尝试修改以包含一些代码来驱动音频蜂鸣器。 我以为我已经解决了这个问题,但现在我遇到了一个新的错误。 注意使用CCS Desktop是一种不可启动的操作。 我想为CCS云找到一个简单的解决方案。 我不理解消息中所指的“默认工具命令”。

我正在使用在另一个项目(BUZZer.c和BUCZZer.h)中找到的以下代码。 我修正的唯一代码行是蜂鸣器。c,在这里我更改了定时器参考库

#include <ti/devices/cc26x0/driverlib/timer.h>

/**===========================================================================================
*@文件 蜂鸣器.c
*
**@简介 基于PWM的蜂鸣器接口。
*===========================================================================================================================================================
*/*----------------------------------


*包括
*----------------------------------
*//

TI RTOS驱动程序
#include <ti/drivers/Power.h>
#include <ti/drivers/power/PowerCC26XX.h>//

临时PWM解决方案,直接在DriverLib
//(直到计时器RTOS驱动程序到位)
#include <ti/drivers/pinCC26XX.h>
#include <ti/devices/cc26x0/蜂

鸣器<!-----!--batt低-------------------------------------------------------------------------------------------------------------------



*局部变量
*----------------------------------
*/
static PIN_handle hPin = NULL;

/*----------------------------------
*公共职能
*----------------------------------
*

///..................
*@fn. BuzzerOpen
*
**@简介 初始化蜂鸣器
*
**@描述 初始化引脚和PWM
*
**@返回 -
*/
void buzzerOpen (PIN_handle hGpioPin)
{
hpin = hGpioPin;

//打开GPT0和GPIO的Periph功率域和时钟
POWER_setDependency (PowerCC26XX_Periph_GPT0);
POWER_setConstraint (PowerCC26XX_SB_Disallow);

//指定GPT0
TimerConfigure(GPT0_base, timer_CFG_Split_pair | timer_CFG_A_PWM);

//为PWM输出配置引脚
PINCC26XX_setMux (hPin,Board_B蜂 鸣器,IOC_PORT_MCU_PORT_EVENT0);
}/*******************************************************************************



*@fn. buzzerSetFrequency
*
**@简介 设置频率(3Hz - 8 KHz)
*
*@返回 如果频率在范围
*/
bool buzzerSetFrequency (uint16_t freq)
{
uINT32_t刻度;
UINT32_t loadLow;
UINT32_t loadHigh;
UINT32_t matchLow;
UINT32_t matchHigh;

IF (频率< BUZZER_FREQ_MIN &&频率> BUZZER_FREQ_MAX)
{
返回false;
}

//重新配置期间停止计时器
TimerDisable (GPT0_BASE,TIMER_A);

//计算计时器负载和匹配值
ticks = 4800万 / freq;
loadLow = ticks和0x0000FFFF;
loadHigh =(tick & 0x00FF0000)>> 16;
matchLow =(tick / 2)& 0x0000FFFF;
matchHigh =(ticks / 2)和0x00FF0000)>> 16;

//设置计时器负载
TimerLoadSet(GPT0_base, timer_A,loadLow);
TimerPrescaleSet (GPT0_BASE,TIMER_A,loadHigh);

//设置计时器匹配
TimerMatchSet(GPT0_base, timer_both, matchLow);
TimerPrescaleMatchSet (GPT0_BASE,TIMER_A,matchHigh);

//启动计时器
TimerEnable (GPT0_BASE,TIMER_A);

返回true;
}/***********************************************************************


*@fn. BuzzerClose
*
**@简介 关闭蜂鸣器接口
*
**@返回 -*/

void buzzerClose()
{
//将引脚配置为GPIO
PINCC26XX_setMux (hPin,Board_p蜂 鸣器,IOC_PORT_GPIO);

//关闭GPT0的Periph功率域和时钟
Power_releaseDependency (PowerCC26XX_Periph_GPT0);
power_releaseConstraint (PowerCC26XX_SB_disallow);
} 

蜂鸣器.h:

/**===========================================================================================
*@文件buzzer.h
*
*@基于PWM的短蜂鸣器接口。
*
*===========================================================================================================================================================
*/
#ifndef _b蜂 鸣器_H_
#define _b蜂 鸣器_H_
/*----------------------------------
*包括
*----------------------------------
*/
包含"Board.h"

/*----------------------------------
*常量
*----------------------------------
*/
#define蜂鸣器_FREQ_MIN 3.
#define buzer_FREQ_MAX 8000

/*----------------------------------
*功能
*----------------------------------
*/
void buzzerOpen(PIN_handle hPinGpio);
布尔buzzerSetFrequency (uint16_t频率);
void buzzerClose(void);

#endif

我的主项目文件watchdog.c修改如下:

/*
========= watchdog.c.===
*/
#include <unistd.h>
#include <stdbool.h>
#include <stdint.h>/*


TI-RTOS头文件*/
#include <ti/drivers/PIN.h>
#include <ti/drivers/Watchdog.h>

/* example/Board Header文件*/
#include "Board.h"

/#p蜂
鸣


器*用于此应用程序的频率/#frequency 1000


/* PIN_Config表的全局内存存储*/
static PIN_State ledPinState;
static PIN_State buttonPinState;
//static PIN_State buzzerPinState;

/*引脚驱动器手柄*/
static PIN_handle ledPinHandle;
static PIN_handle buttonPinHandle;
static PIN_handle buzzerPinHandle;

/*
应用程序LED最初配置
为DIPin 0。
*/
PIN_Config ledPinTable[]={
Board_PIN_LED0 | PIN_GPIO输出_EN | PIN_GPIO低| PIN_PushPull | PIN_DRVSTR_MAX,
PIN_TERMINATE
};/*


应用程序按钮插针配置表:
*/
PIN_Config按钮插针表[]={
Board_PIN_BUTTON0 | PIN_INT_EN | PIN_PLUPUP | PIN_IRQ_POSedge,
PIN_TERMINATE
};/*


应用程序蜂鸣器针脚配置表:
*- Board_PIN_BUZZER最初关闭。
*/
PIN_Config buzzerPinTable[]={
Board_PIN_B蜂 鸣器| PIN_GPIO输出_EN | PIN_GPIO低| PIN_PushPull | PIN_DRVSTR_MAX,
PIN_TERMINATE
};

bool serviceFlag = TRUE;
bool watchdogExpirred = FALSE;
Watchdog手柄watchdogHandle;

/*
=== watchdogCallback =========
*监视器中断回调函数。
*/
void watchdogCallback (uintpttr_t未使用)
{
/* Clear watchdog interrupt flag */
看门狗清除(watchdogHandle);

watchdogExpirred =真;

/*在此处插入超时处理代码。 */
}/*


==== pinButtonFxn =========
*用于BOARD_PIN_BUTTON0上GPIO中断的回调函数。
*/
void pinButtonFxn (PIN_handle handle,PIN_ID pinId)
{
/*清除serviceFlag以停止持续为看门狗提供服务*/
serviceFlag = false;
}/*


=== 主====
*/
void *mainThread (void *arg0)
{
Watchdog Params参数;

/*呼叫板初始化函数*/
看门狗_init();

/* LED针脚开路*/
ledPinHandle = PIN_open(&ledPinState, ledPinTable);
IF (!ledPinHandle){
/*初始化主板LED针脚时出错*/
同时(1);}


/*关闭用户LED */
PIN_setOutputValue (ledPinHandle,Board_PIN_LED0,0);

/*设置按键引脚的回叫*/
buttonPinHandle = PIN_OPEN (&buttonPinState,buttonPinTable);
IF (!buttonPinHandle){
/*初始化按钮针脚时出错*/
同时(1);}

如果(PIN_registerIntCb(butonPinHandle,&pinButtonFxn)!=0){
/*注册按钮回调函数时出错*/
同时(1);}

PIN_setInterrupt (buttonPinHandle,Board_PIN_BUTTON0|PIN_IRQ_POSedge);

/*创建并启用禁用重置的监视程序*/
Watchdog Params_init(&params);
params.callbackFxn =(Watchdog Callback) watchdogCallback;
Params.resetMode = Watchdog重设关闭;
watchdogHandle = Watchdog打开(Board_WATCHDOG0,&params);
如果(watchdogHandle == NULL){
/*打开监视程序时出错*/
同时(1);}


/*输入连续循环*/
同时(true){

/*如果serviceFlag为true */,则服务监视程序
如果(serviceFlag){
Watchdog清除(watchdogHandle);
}

/*如果看门狗自上次启动后过期,打开LED */
如果(watchdogExpirred){
PIN_setOutputValue (ledPinHandle,Board_PIN_LED0,1);
//打开声音
BuzzerOpen(ButonPinHandle);
buzzerSetFrequency (蜂鸣器频率);
睡眠(5);
看门狗清除(watchdogHandle);
serviceFlag =真;
watchdogExpirred =假;
PIN_setOutputValue (ledPinHandle,Board_PIN_LED0,0);
//关闭声音
buzzerClose();
}
}
} 

然后,我将以下内容添加到我的本地Board.h文件中:

#define Board_GPIO蜂鸣器    CC2640R2_LAUNCHXL_GPIO蜂鸣器

#define Board_PIN_p蜂 鸣器     CC2640R2_LAUNCHXL_PIN_BUZZER

#define Board_Buzzer       Board_PIN_蜂 鸣器
然后在CC2640R2_LAUNCHXL.h内
/*蜂鸣器*/
#定义CC2640R2_LAUNCHXL_PIN_BUZZER ioID_15.

/*!
*@def CC2640R2_LAUNCHLX_GPIOName
*@GPIO名称的简明枚举
*/
typedef enum CC2640R2_LAUNCCHXL_GPIOName {
CC2640R2_LAUNCHXL_GPIO _S1 = 0,
CC2640R2_LAUNCHXL_GPIO_S2,
CC2640R2_LAUNCHXL_GPIO蜂鸣器,
CC2640R2_LAUNCHXL_GPIO_LED_GREEN,
CC2640R2_LAUNCHXL_GPIO_LED_RED,
CC2640R2_LAUNCHXL_GPIO_SPI_FLASH_CS,

CC2640R2_LAUNCCHXL_GPIOCOUNT
} CC2640R2_LAUNCCHXL_GPIOName;

和 CC2640R2_LAUNCHLL.c
gPIO_PinConfig gpioPinConfig[]={
/*输入引脚*/
GPIOCC26XX_DIO_13 | GPIO_CFG_IN_PU | GPIO _CFG_IN_INT_INT_Rising,/*按钮0 */
GPIOCC26XX_DIO_14 | GPIO_CFG_IN_PU | GPIO _CFG_IN_INT_INT_Rising,/*按钮1 */

/*输出引脚*/
GPIOCC26XX_DIO_15 | GPIO_CFG_OUT _STD | GPIO_CFG_OUT _STR_HIGH | GPIO_CFG_OUT低,/*音调蜂鸣器*/
GPIOCC26XX_DIO_07 | GPIO_CFG_OUT _STD | GPIO_CFG_OUT _STR_HIGH | GPIO_CFG_OUT低,/*绿色LED */
GPIOCC26XX_DIO_06 | GPIO_CFG_OUT _STD | GPIO_CFG_OUT _STR_HIGH | GPIO_CFG_OUT低,/*红色LED */


/* SPI Flash CSN */
GPIOCC26XX_DIO_20 | GPIO_CFG_OUT _STD | GPIO_CFG_OUT _STR_HIGH | GPIO _CFG_OUT _HIGH
,};

Const PIN_Config BoardGpioInitTable[]={

CC2640R2_LAUNCHXL_PIN_BUZZER | PIN_GPIO OUTPUT EN | PIN_GPIO低| PIN_PushPull | PIN_DRVSTR_MAX, /*新蜂鸣器输出定义*/
CC2640R2_LAUNCHXL_PIN_RLED | PIN_GPIO输出_EN | PIN_GPIO低| PIN_PushPull | PIN_DRVSTR_MAX, /* LED最初关闭*/
CC2640R2_LAUNCHXL_PIN_GLED | PIN_GPIO输出_EN | PIN_GPIO低| PIN_PushPull | PIN_DRVSTR_MAX, /* LED最初关闭*/
CC2640R2_LAUNCCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PLEUP | PIN_IRQ_BOTHEDGES | PIN_HYSTESIS, /*按钮处于活动状态,低*/
CC2640R2_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PLEUP | PIN_IRQ_BOTHEDGES | PIN_HYSTESIS, /*按钮处于活动状态,低*/
CC2640R2_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO输出_EN | PIN_GPIO _HIGH | PIN_PushPull | PIN_DRVSTR_MIN,/*外部闪存芯片选择*/
CC2640R2_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_Pulldown, /* UART RX,通过调试器背面通道*/
CC2640R2_LAUNCHXL_UART_TX | PIN_GPIO输出_EN | PIN_GPIO _HIGH | PIN_PushPull, /* UART TX,通过调试器背面通道*/
CC2640R2_LAUNCCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_Pulldown, /* SPI主输出-从输入*/
CC2640R2_LAUNCCHXL_SPI0_miso | PIN_INPUT_EN | PIN_Pulldown, /* SPI主输入-从输出*/
CC2640R2_LAUNCCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_Pulldown, /* SPI时钟*/

PIN_TERMINATE
};

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

    问题已解决。我收到的错误消息似乎与项目文件夹"tirtos_build_CC2640R2_LAUNCHL_RELEASE _CCS"有关,因为我在所有其他项目中收到相同的错误,它们都正常。

    出现此错误的一个可能原因是我必须重新上载原始监视程序项目。 过程中出现错误。

    我解决了这个问题,从工作空间中删除了所有项目,然后从头开始上载了看门狗示例,编译后,我的所有修改都可以完成编译。

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

    这是否与您备份tirtos_builds项目的问题相同?

    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我猜是这样的,因为我在新上传中复制了我的更改,我的蜂鸣器在经过几次微调后就会工作。 通过了解CC2640R2 Launchpad,我取得了一项巨大成就,最终达到"增强"阶段。

    当时我以为我仍然不了解原始代码示例以及如何引入我建议的更改(因此,将代码剪切粘贴到此帖子中)。