工具/软件:Code Composer Studio
大家好、
我正在使用 CAN 模块。 之前我创建了有关 CAN 模块问题的主题: 
此问题已得到解决、我在输出端获得了正确的 CAN 帧。
我还添加了 ADC 代码。 在进行此修改后、我的代码正常工作、并且可以在 PB1处输出 CAN 帧。
代码如下所示
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ca.h"
#include "inc/hw_ints.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib_voltag.uidr32h
;include "driveript_intrl_uidt.u.idt.idr32";include "driveript_inu.idruidr32_inuidt_uidru.idrupt.idt_uidru.idt_u.idru.idt_u.idru.idt.idt.idt.idr32";inu.idru.idru.idru.idr32_u.idt_u.idru.idt.idt.idt.idt.idt.idru.idru.idru.idru.idr.idr.idr.idr.idr.
SysCtlDelay (40000);
}
void CANIntHandler (void)
{
uint32_t ui32Status;
ui32Status = CANIntStatus (CAN0_BASE、CAN_INT_STS_CAUST);
IF (ui32Status = CAN_INT_INTID_STATUS)
{
ui32Status = CANStatusGet (CAN0_BASE、CAN_STS_CONTROL);
G_bErrFlag = 1;
}
否则、如果(ui32Status = 1)
{
CANIntClear (CAN0_BASE、1);
CANMessageClear (CAN0_BASE、1);
G_bErrFlag = 0;
G_bTXFlag = 1;
}
其他
{
}
}
int main (void)
{
uint32_t ui32MsgData=0;
uint8_t * pui8MsgData;
pui8MsgData =(uint8_t *) ui32MsgData;
tCANMsgObject sCANMessage;
sCANMessage.ui32MsgID = 1;
sCANMessage.ui32MsgIDMask = 0;
sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sCANMessage.ui32MsgLen = sizeof (pui8MsgData);
sCANMessage.pui8MsgData = pui8MsgData;
ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SimpleDelay();
GPIOPinConfigure (GPIO_PA0_CAN0RX);
GPIOPinConfigure (GPIO_PA1_CAN0TX);
GPIOPinTypeCAN (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
SysCtlPeripheralEnable (SYSCTL_Periph_ADC1);
SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
GPIOPinTypeADC (GPIO_PORTD_base、GPIO_PIN_5);//PD5-CH6-温度
ADCClockConfigSet (ADC1_base、ADC_CClock_SRC_PLL | ADC_CClock_RATE_FULL、15);
ADCSequenceConfigure (ADC1_base、3、ADC_TRIGGER_ALE一直、0);
ADCSequenceStepConfigure (ADC1_base、3、0、ADC_CTL_CH6|ADC_CTL_IE|ADC_CTL_END);//REV.Pow
CANInit (CAN0_BASE);SimpleDelay ();
CANBitRateSet (CAN0_BASE、120000000、1000000);SimpleDelay ();
ADCSequenceEnable (ADC1_BASE、3);
ADCIntClear (ADC1_BASE、3);
CANIntRegister (CAN0_BASE、CANIntHandler);SimpleDelay ();
CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);SimpleDelay ();
IntEnable (INT_CAN0);SimpleDelay ();
CANEnable (CAN0_BASE);SimpleDelay ();
计数= 0;
ui32ACCavg1=0;
G_bTXFlag=1;
while (1)
{
while (g_bTXFlag)
{
G_bTXFlag=0;
计数= 0;
while (计数<10)
{
while (!ADCIntStatus (ADC1_base、3、false))
{
}
ADCSequenceDataGet (ADC1_base、3、\ui32ACCValues1);
ADCIntClear (ADC1_BASE、3);
ui32ACCAVG1=ui32ACCAVG1+ui32ACCValues1;
count++;
}
ui32MsgData=ui32ACCVG1/10;
CANMessageSet (CAN0_BASE、1、&sCANMessage、MSG_OBJ_TYPE_TX);
ui32ACCavg1=0;
SimpleDelay();
}
}
现在相同的代码无法正常工作。 没有 CAN 帧出现。
我有4个备用板2正在使用中、2个新的(包装盒)。
我尝试使用我在上一个线程中提到的这个代码和简单 TX 代码来重新编程这个4备用电路板。 但我还是看不到 CAN 帧出来了。
PB1引脚为3.3V ALWasys。
所有电路板都在使用 ADC 代码重新编程时工作、我将获得正确的输出。
LED 闪烁代码正在运行。 我尝试切换 PB0& PB1引脚并正常工作。输出时有方形器件。
从那一天开始,CAN 无法正常工作我在调试时遇到错误,因为 boot.asm:227 0x00000C5A (_c_int00不包含帧信息
CCS 中的调试错误和设置位于以下 PICS 中:
希望这个问题能尽快解决
