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.
工具/软件:Code Composer Studio
你(们)好
我是TI MCU/CSS的新手(也是MCU的新手)。
我尝试为MCU构建一个旧项目,但由于include文件和DriverLib不可访问而出现错误,我尝试包含的文件包括:
我正在尝试修改所附项目的从属部分,我所做的更改不包括在内,这是GitHub的项目副本,我假定上载项目时项目正常。
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/HW_CAN.h"
#include "inc/hw_ints.h"
#include "driverlib/can.h"
#include "driverlib/interrupT.h"
#include "driverlib/sysctl.h"
#include "driverlib/gPI.h"
#include "driverlib/UART.h"
#include "driverlib/pin_map.h"
#include "utils/uartstdio.h"
似乎无法获得memmap.h和以下文件,我认为所有这些文件都可以通过下载一些“软件包”到CCS添加到工具中,这是正确的吗?
如何获得它?
请记住,我是新手,所以请与我一起解释"为傻子"。
感谢您的帮助,Petere2e.ti.com/.../tiva_2D00_can_2D00_bus_2D00_master.zip
Peter,
您需要的软件包称为TivaWare。 有几种方法可以获得它。 您可以从此处下载并安装:
http://www.ti.com/tool/sw-tm4c
或者,如果您使用的是较新版本的CCSv7,则可以转到“查看”菜单。 选择资源管理器。 在软件下浏览并选择如下所示的软件包。
安装程序包后,您需要检查项目中的搜索路径设置。 如果您在项目资源管理器中右键单击项目并选择属性。 然后查看下面的截获,了解路径的设置位置。
在我的项目中,我从资源管理器导入了项目,此示例使用变量自动设置了包含路径,该变量由安装TivaWare的位置定义。 您可以使用该路径,也可以只指定安装路径。
我还建议查看此研讨会。 它有助于学习CCS。
此致,
John
您好,John
谢谢,我原本以为它是一个缺失的"软件包"或文件路径,我已经下载了该软件包,它也存在于资源管理器中,但文件路径中未包含该软件包。
到目前为止,我将学习您链接到的研讨会。
现在我要谈另一个问题,也许你可以解释为什么我会得到这些未定义的符号?
这是我的main.c,我的项目中唯一的文件:
/*
* CAN总线LED控制器从固件
*专为TI TIVA TM4C123GH6PM编写
*/
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/HW_CAN.h"
#include "inc/hw_ints.h"
#include "driverlib/can.h"
#include "driverlib/interrupT.h"
#include "driverlib/sysctl.h"
#include "driverlib/gPI.h"
#include "driverlib/UART.h"
#include "driverlib/pin_map.h"
#include "utils/uartstdio.h"
//#include "drivers/rgB.h"
volatile rxFlag =0;// msg已接收标志
volatile errFlag =0;//错误标志
//PJvolatile int LEN =0;//PJ CAN消息长度
//可以中断处理程序
void CANIntHandler (void){
unsigned long status = CANIntStatus (CAN0_BASE,CAN_INT_STS_CAUSE);//读取中断状态
IF (STATUS == CAN_INT_INTID_STATUS){//控制器状态中断
状态= CANStatusGet (CAN0_BASE,CAN_STS_CONTROL);
errFlag = 1;
} else if (status ==1){// msg对象1.
CANIntClear (CAN0_BASE,1);//清除中断
rxFlag = 1;//设置Rx标志
errFlag =0;//清除任何错误标志
}否则{//永远不会发生
UARTprintf ("意外CAN总线中断\n");
}
}
int main (void){
tCANMsgObject msg;// CAN msg对象
rx消息数据的unsigned char msgData[8];// 8字节缓冲区
//从晶体运行频率为50MHz
SysCltlClockSet(sysctl_SYSDIV_4| sysctl_use_pll | sysctl_XTAL_16MHz | sysctl_OSC主);
//设置调试UART
SysCtlPeripheralEnable(sysctl_Periph_GPIOA);
SysCtlPeripheralEnable(sysctl_Periph_UART0);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO _Porta_base,GPIO PIN_0 | GPIO PIN_1);
UARTStdioConfig (11.52万,SysCltlClockGet ()));
//设置CAN0
SysCtlPeripheralEnable(sysctl_Periph_GPIOE);
GPIOPinConfigure(GPIO_PE4_CAN0RX);
GPIOPinConfigure(GPIO_PE5_CAN0TX);
GPIOPinTypeCAN (GPIO _PORT_BASE,GPIO PIN_4 | GPIO PIN_5);
SysCtlPeripheralEnable(sysctl_Periph_CAN0);
CANInit (CAN0_BASE);
CANBitRateSet (CAN0_BASE,SysClockSet(),50万);
CANIntRegister (CAN0_BASE,CANIntHandler);//使用动态矢量表分配
CANIntEnable (CAN0_BASE,CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN0);
CANEnable (CAN0_BASE);
//设置LED驱动器
//PJRGBInit (1);
//使用ID和掩码0接收任何CAN ID的消息
MSG.ui32MsgID = 0;
MSG.ui32MsgIDMask = 0;
MSG.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
MSG.ui32MsgLen =8;//最多允许8个字节
//将消息加载到CAN外围消息对象1中,以便它可以在任何匹配的Rx消息上触发中断
CANMessageSet (CAN0_BASE,1,&msg,MSG_OBJ_TYPE_RX);
//PJ无符号int颜色[3];
//PJ浮子强度;
而(1){
IF (rxFlag){// Rx中断已发生
MSG.pui8MsgData = msgData;//设置指向Rx缓冲区的指针
CANMessageGet (CAN0_BASE,1,&msg,0);//从CAN外围设备读取CAN消息对象1
rxFlag =0;//清除Rx标志
IF (msg.ui32Flags & MSG_OBJ_DATA_Lost){//检查丢失消息的消息标志
UARTprintf ("检测到CAN消息丢失\n");
}
//从Rx缓冲区读取彩色数据(LED驱动器从0-255扩展到0-0xFFFF)
//PJcolor[0]= msgData[0]* 0xFF;
//PJcolor[1]= msgData[1]* 0xFF;
//PJcolor[2]= msgData[2]* 0xFF;
//PJIntensity = msgData[3]/250f;//从0-255缩放至浮点0-1
//写入UART以进行调试
//PJUARTprintf ("接收的颜色\tr:%d\TG:%d\tb:%d\ti:%d\n",msgData[0],msgData[1],msgData[2],msgData[3]);
UARTprintf ("ID\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",msgData[0],msgData[1],msgData[2],msgData[3], msgData[4],msgData[5],msgData[6],msgData[7]);
//设置颜色和强度
//PJRGBSet (颜色,强度);
}
}
返回0;
}
谢谢你,Peter