提交 e2f2b1a9 作者: 高增攀

123

上级 e7758fb7
...@@ -87,6 +87,9 @@ StructMemory UserParamDef = ...@@ -87,6 +87,9 @@ StructMemory UserParamDef =
.Module = {eDCModType_Incre,1}, .Module = {eDCModType_Incre,1},
.SingleMaxCurrt = 2000, .SingleMaxCurrt = 2000,
.SOCMAX = 100, .SOCMAX = 100,
.PillarCommAddr = 0;
.PillarCommAddr_B = 0;
}; };
...@@ -157,6 +160,8 @@ StructMemory UserParam = ...@@ -157,6 +160,8 @@ StructMemory UserParam =
.Module = {eDCModType_Incre,1}, .Module = {eDCModType_Incre,1},
.SingleMaxCurrt = 2000, .SingleMaxCurrt = 2000,
.SOCMAX = 100, .SOCMAX = 100,
.PillarCommAddr = 0;
.PillarCommAddr_B = 0;
}; };
StructFlashRecdParam TempChgRecdParam = //历史充电记录参数 StructFlashRecdParam TempChgRecdParam = //历史充电记录参数
......
...@@ -247,6 +247,8 @@ typedef struct ...@@ -247,6 +247,8 @@ typedef struct
StructModul Module; StructModul Module;
u16 SingleMaxCurrt; u16 SingleMaxCurrt;
u16 SOCMAX; u16 SOCMAX;
u8 PillarCommAddr;//分体桩通讯地址
u8 PillarCommAddr_B;//分体桩通讯地址
}StructMemory; }StructMemory;
extern StructMemory UserParam; extern StructMemory UserParam;
......
...@@ -51,12 +51,12 @@ void DcModuleRxIrqHandle(void) ...@@ -51,12 +51,12 @@ void DcModuleRxIrqHandle(void)
//StructDcModuleStatus Data; //StructDcModuleStatus Data;
u8 RecvFlag; u8 RecvFlag;
IrSta = MCP2515_ReadStatus(); IrSta = MCP2515_B_ReadStatus();
if (IrSta & 0x01) if (IrSta & 0x01)
{ {
RecvFlag = MCP2515_Receive(0, &RxMsg); RecvFlag = MCP2515_B_Receive(0, &RxMsg);
MCP2515_BitModify(CANINTF, 0x01, 0x00); MCP2515_B_BitModify(CANINTF, 0x01, 0x00);
if (TRUE == RecvFlag) if (TRUE == RecvFlag)
...@@ -82,8 +82,8 @@ void DcModuleRxIrqHandle(void) ...@@ -82,8 +82,8 @@ void DcModuleRxIrqHandle(void)
} }
else if (IrSta & 0x02) else if (IrSta & 0x02)
{ {
RecvFlag = MCP2515_Receive(1, &RxMsg); RecvFlag = MCP2515_B_Receive(1, &RxMsg);
MCP2515_BitModify(CANINTF, 0x02, 0x00); MCP2515_B_BitModify(CANINTF, 0x02, 0x00);
if (TRUE == RecvFlag) if (TRUE == RecvFlag)
{ {
...@@ -113,19 +113,17 @@ void DcModuleRxIrqHandle(void) ...@@ -113,19 +113,17 @@ void DcModuleRxIrqHandle(void)
void DcModuleCanInit(void) void DcModuleCanInit(void)
{ {
DcModleVoltChkCnt = 0; DcModleVoltChkCnt = 0;
DcModuleGroupDateInit(); MCP2515_B_EnterCritical();
MCP2515_EnterCritical(); MCP2515_B_SetInt(TCURxIrqHandle, DISABLE);
MCP2515_SetInt(DcModuleRxIrqHandle, DISABLE); MCP2515_B_SpiInit(); //初始化MCU的SPI总线
MCP2515_SpiInit(); //初始化MCU的SPI总线 MCP2515_B_Reset(); // MCP2515 启动前进行软件复位
MCP2515_Reset(); // MCP2515 启动前进行软件复位
//使用位修改指令将MCP2515设置为配置模式 //使用位修改指令将MCP2515设置为配置模式
//也就是将CANCTRL寄存器的REQOP[2:0]设置为100 //也就是将CANCTRL寄存器的REQOP[2:0]设置为100
MCP2515_BitModify(CANCTRL, 0xE0, (1 << REQOP2)); MCP2515_B_BitModify(CANCTRL, 0xE0, (1 << REQOP2));
/* /*
//计算并设置MCP2515的位时间 //计算并设置MCP2515的位时间
...@@ -135,74 +133,74 @@ void DcModuleCanInit(void) ...@@ -135,74 +133,74 @@ void DcModuleCanInit(void)
// 最小时间份额 TQ = 2 * ( BRP + 1 ) / Fosc = 2*(7+1)/16M = 1uS // 最小时间份额 TQ = 2 * ( BRP + 1 ) / Fosc = 2*(7+1)/16M = 1uS
// 同步段 Sync Seg = 1TQ // 同步段 Sync Seg = 1TQ
// 传播段 Prop Seg = ( PRSEG + 1 ) * TQ = 1 TQ // 传播段 Prop Seg = ( PRSEG + 1 ) * TQ = 1 TQ
// 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 3 TQ // 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 1 TQ
// 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 3 TQ // 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 1 TQ
// 同步跳转长度设置为 CNF1.SJW[1:0] = 00, 即 1TQ // 同步跳转长度设置为 CNF1.SJW[1:0] = 00, 即 1TQ
// 总线波特率 NBR = Fbit = 1/(sync seg + Prop seg + PS1 + PS2 ) // 总线波特率 NBR = Fbit = 1/(sync seg + Prop seg + PS1 + PS2 )
// = 1/(8TQ) = 1/8uS = 125kHz // = 1/(4TQ) = 1/4uS = 250kHz
//设置分频控制器CNF1.BRP[5:0] = 7,同步跳转长度设置为 CNF1.SJW[1:0] = 00 //设置分频控制器CNF1.BRP[5:0] = 7,同步跳转长度设置为 CNF1.SJW[1:0] = 00
MCP2515_WriteReg( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) ); MCP2515_WriteReg( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) );
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ // 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ
MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(1<<PHSEG11) ); MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(0<<PHSEG10) );
// 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器 // 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器
MCP2515_WriteReg( CNF3, (1<<PHSEG21) ); MCP2515_WriteReg( CNF3, (0<<PHSEG20) );
*/ */
MCP2515_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2)); //125K MCP2515_B_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2));
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ // 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ
MCP2515_WriteReg(CNF2, (1 << BTLMODE) | (1 << PHSEG11)); MCP2515_B_WriteReg(CNF2, (1 << BTLMODE) | (0 << PHSEG11));
// 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器 // 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器
MCP2515_WriteReg(CNF3, (1 << PHSEG21)); MCP2515_B_WriteReg(CNF3, (0 << PHSEG21));
// 设置MCP2515中断使能寄存器,使能接收缓冲器中断 // 设置MCP2515中断使能寄存器,使能接收缓冲器中断
MCP2515_WriteReg(CANINTE, (1 << RX1IE) | (1 << RX0IE)); MCP2515_B_WriteReg(CANINTE, (1 << RX1IE) | (1 << RX0IE));
//设置数据接收相关寄存器 //设置数据接收相关寄存器
// 设置RXM[1:0]=11,关闭接收缓冲器0屏蔽/滤波功能,接收所有报文;禁止滚存功能 // 设置RXM[1:0]=11,关闭接收缓冲器0屏蔽/滤波功能,接收所有报文;禁止滚存功能
//MCP2515_WriteReg(RXB0CTRL, (1<<RXM1)|(1<<RXM0)); //MCP2515_WriteReg(RXB0CTRL, (1<<RXM1)|(1<<RXM0));
MCP2515_WriteReg(RXB0CTRL, (1 << RXM1) | (1 << RXM0) | (1 << BUKT)); MCP2515_B_WriteReg(RXB0CTRL, (1 << RXM1) | (1 << RXM0) | (1 << BUKT));
// 设置RXM[1:0]=11,关闭接收缓冲器1屏蔽/滤波功能,接收所有报文; // 设置RXM[1:0]=11,关闭接收缓冲器1屏蔽/滤波功能,接收所有报文;
MCP2515_WriteReg(RXB1CTRL, (1 << RXM1) | (1 << RXM0)); MCP2515_B_WriteReg(RXB1CTRL, (1 << RXM1) | (1 << RXM0));
u8 Temp[4] = u8 Temp[4] =
{ {
0, 0, 0, 0 0, 0, 0, 0
}; };
//设置6个验收滤波寄存器为0, //设置6个验收滤波寄存器为0,
MCP2515_WriteBuffer(RXF0SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF0SIDH, Temp, 4);
MCP2515_WriteBuffer(RXF1SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF1SIDH, Temp, 4);
MCP2515_WriteBuffer(RXF2SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF2SIDH, Temp, 4);
MCP2515_WriteBuffer(RXF3SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF3SIDH, Temp, 4);
MCP2515_WriteBuffer(RXF4SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF4SIDH, Temp, 4);
MCP2515_WriteBuffer(RXF5SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXF5SIDH, Temp, 4);
//设置2个验收滤波寄存器为0, //设置2个验收滤波寄存器为0,
MCP2515_WriteBuffer(RXM0SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXM0SIDH, Temp, 4);
MCP2515_WriteBuffer(RXM1SIDH, Temp, 4); MCP2515_B_WriteBuffer(RXM1SIDH, Temp, 4);
//配置引脚 //配置引脚
//设置接收相关引脚控制寄存器,配置它们禁用第二功能 //设置接收相关引脚控制寄存器,配置它们禁用第二功能
MCP2515_WriteReg(BFPCTRL, 0); MCP2515_B_WriteReg(BFPCTRL, 0);
//调试使用,设置BFPCTRL使RX0BF,RX1BF设置为数字输出。 //调试使用,设置BFPCTRL使RX0BF,RX1BF设置为数字输出。
//MCP2515_BitModify( BFPCTRL, (1<<B1BFE)|(1<<B0BFE)|(1<<B1BFM)|(1<<B0BFM), (1<<B1BFE)|(1<<B0BFE) ); //MCP2515_BitModify( BFPCTRL, (1<<B1BFE)|(1<<B0BFE)|(1<<B1BFM)|(1<<B0BFM), (1<<B1BFE)|(1<<B0BFE) );
//设置发送相关引脚控制寄存器,配置它们禁用第二功能 //设置发送相关引脚控制寄存器,配置它们禁用第二功能
MCP2515_WriteReg(TXRTSCTRL, 0); MCP2515_B_WriteReg(TXRTSCTRL, 0);
//MCP2515进入环回模式,进行功能测试 //MCP2515进入环回模式,进行功能测试
//MCP2515_BitModify(CANCTRL, 0XE0, (1<<REQOP1)); //MCP2515_BitModify(CANCTRL, 0XE0, (1<<REQOP1));
//MCP2515进入正常模式 //MCP2515进入正常模式
MCP2515_BitModify(CANCTRL, 0xE0, 0); MCP2515_B_BitModify(CANCTRL, 0xE0, 0);
MCP2515_SetInt(DcModuleRxIrqHandle, ENABLE); MCP2515_B_SetInt(DcModuleRxIrqHandle, ENABLE);
MCP2515_ExitCritical(); MCP2515_B_ExitCritical();
MCP2515_SpiHightSpeedInit(); MCP2515_B_SpiHightSpeedInit();
} }
......
...@@ -32,7 +32,7 @@ u8 TCUSendMsg(StructChargeSend * pMsg) ...@@ -32,7 +32,7 @@ u8 TCUSendMsg(StructChargeSend * pMsg)
TxMsg.Data[6] = pMsg->Data[6]; TxMsg.Data[6] = pMsg->Data[6];
TxMsg.Data[7] = pMsg->Data[7]; TxMsg.Data[7] = pMsg->Data[7];
if (CAN_TxStatus_NoMailBox != MCP2515_B_Transmit(&TxMsg)) if (CAN_TxStatus_NoMailBox != MCP2515_Transmit(&TxMsg))
return TRUE; return TRUE;
return FALSE; //未发送成功,返回FALSE return FALSE; //未发送成功,返回FALSE
...@@ -50,13 +50,13 @@ void TCURxIrqHandle(void) ...@@ -50,13 +50,13 @@ void TCURxIrqHandle(void)
{ {
.Mult = 0, .Mult = 0,
}; };
IrSta = MCP2515_B_ReadStatus(); IrSta = MCP2515_ReadStatus();
portBASE_TYPE taskWoken = pdFALSE; portBASE_TYPE taskWoken = pdFALSE;
if (IrSta & 0x01) if (IrSta & 0x01)
{ {
MCP2515_B_Receive(0, &RxMsg); MCP2515_Receive(0, &RxMsg);
MCP2515_B_BitModify(CANINTF, 0x01, 0x00); MCP2515_BitModify(CANINTF, 0x01, 0x00);
if ((CAN_ID_STD == RxMsg.IDE) || (CAN_RTR_REMOTE == RxMsg.RTR)) if ((CAN_ID_STD == RxMsg.IDE) || (CAN_RTR_REMOTE == RxMsg.RTR))
return; return;
...@@ -153,8 +153,8 @@ void TCURxIrqHandle(void) ...@@ -153,8 +153,8 @@ void TCURxIrqHandle(void)
if (IrSta & 0x02) if (IrSta & 0x02)
{ {
MCP2515_B_Receive(1, &RxMsg); MCP2515_Receive(1, &RxMsg);
MCP2515_B_BitModify(CANINTF, 0x02, 0x00); MCP2515_BitModify(CANINTF, 0x02, 0x00);
if ((CAN_ID_STD == RxMsg.IDE) || (CAN_RTR_REMOTE == RxMsg.RTR)) if ((CAN_ID_STD == RxMsg.IDE) || (CAN_RTR_REMOTE == RxMsg.RTR))
return; return;
...@@ -256,17 +256,20 @@ void TCURxIrqHandle(void) ...@@ -256,17 +256,20 @@ void TCURxIrqHandle(void)
void TCUCanInit(void) void TCUCanInit(void)
{ {
MCP2515_B_EnterCritical();
MCP2515_B_SetInt(TCURxIrqHandle, DISABLE); DcModuleGroupDateInit();
MCP2515_B_SpiInit(); //初始化MCU的SPI总线 MCP2515_EnterCritical();
MCP2515_B_Reset(); // MCP2515 启动前进行软件复位 MCP2515_SetInt(DcModuleRxIrqHandle, DISABLE);
MCP2515_SpiInit(); //初始化MCU的SPI总线
MCP2515_Reset(); // MCP2515 启动前进行软件复位
//使用位修改指令将MCP2515设置为配置模式 //使用位修改指令将MCP2515设置为配置模式
//也就是将CANCTRL寄存器的REQOP[2:0]设置为100 //也就是将CANCTRL寄存器的REQOP[2:0]设置为100
MCP2515_B_BitModify(CANCTRL, 0xE0, (1 << REQOP2)); MCP2515_BitModify(CANCTRL, 0xE0, (1 << REQOP2));
/* /*
//计算并设置MCP2515的位时间 //计算并设置MCP2515的位时间
...@@ -276,74 +279,74 @@ void TCUCanInit(void) ...@@ -276,74 +279,74 @@ void TCUCanInit(void)
// 最小时间份额 TQ = 2 * ( BRP + 1 ) / Fosc = 2*(7+1)/16M = 1uS // 最小时间份额 TQ = 2 * ( BRP + 1 ) / Fosc = 2*(7+1)/16M = 1uS
// 同步段 Sync Seg = 1TQ // 同步段 Sync Seg = 1TQ
// 传播段 Prop Seg = ( PRSEG + 1 ) * TQ = 1 TQ // 传播段 Prop Seg = ( PRSEG + 1 ) * TQ = 1 TQ
// 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 1 TQ // 相位缓冲段 Phase Seg1 = ( PHSEG1 + 1 ) * TQ = 3 TQ
// 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 1 TQ // 相位缓冲段 Phase Seg2 = ( PHSEG2 + 1 ) * TQ = 3 TQ
// 同步跳转长度设置为 CNF1.SJW[1:0] = 00, 即 1TQ // 同步跳转长度设置为 CNF1.SJW[1:0] = 00, 即 1TQ
// 总线波特率 NBR = Fbit = 1/(sync seg + Prop seg + PS1 + PS2 ) // 总线波特率 NBR = Fbit = 1/(sync seg + Prop seg + PS1 + PS2 )
// = 1/(4TQ) = 1/4uS = 250kHz // = 1/(8TQ) = 1/8uS = 125kHz
//设置分频控制器CNF1.BRP[5:0] = 7,同步跳转长度设置为 CNF1.SJW[1:0] = 00 //设置分频控制器CNF1.BRP[5:0] = 7,同步跳转长度设置为 CNF1.SJW[1:0] = 00
MCP2515_WriteReg( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) ); MCP2515_WriteReg( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) );
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ // 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ
MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(0<<PHSEG10) ); MCP2515_WriteReg( CNF2, (1<<BTLMODE)|(1<<PHSEG11) );
// 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器 // 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器
MCP2515_WriteReg( CNF3, (0<<PHSEG20) ); MCP2515_WriteReg( CNF3, (1<<PHSEG21) );
*/ */
MCP2515_B_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2)); MCP2515_WriteReg(CNF1, (1 << BRP0) | (1 << BRP1) | (1 << BRP2)); //125K
// 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度1TQ // 设置传播段 Prop Seg 为00,即1TQ,相位缓冲段 Phase Seg1的长度3TQ
MCP2515_B_WriteReg(CNF2, (1 << BTLMODE) | (0 << PHSEG11)); MCP2515_WriteReg(CNF2, (1 << BTLMODE) | (1 << PHSEG11));
// 设置 相位缓冲段 Phase Seg2为 1TQ , 禁用唤醒滤波器 // 设置 相位缓冲段 Phase Seg2为 3TQ , 禁用唤醒滤波器
MCP2515_B_WriteReg(CNF3, (0 << PHSEG21)); MCP2515_WriteReg(CNF3, (1 << PHSEG21));
// 设置MCP2515中断使能寄存器,使能接收缓冲器中断 // 设置MCP2515中断使能寄存器,使能接收缓冲器中断
MCP2515_B_WriteReg(CANINTE, (1 << RX1IE) | (1 << RX0IE)); MCP2515_WriteReg(CANINTE, (1 << RX1IE) | (1 << RX0IE));
//设置数据接收相关寄存器 //设置数据接收相关寄存器
// 设置RXM[1:0]=11,关闭接收缓冲器0屏蔽/滤波功能,接收所有报文;禁止滚存功能 // 设置RXM[1:0]=11,关闭接收缓冲器0屏蔽/滤波功能,接收所有报文;禁止滚存功能
//MCP2515_WriteReg(RXB0CTRL, (1<<RXM1)|(1<<RXM0)); //MCP2515_WriteReg(RXB0CTRL, (1<<RXM1)|(1<<RXM0));
MCP2515_B_WriteReg(RXB0CTRL, (1 << RXM1) | (1 << RXM0) | (1 << BUKT)); MCP2515_WriteReg(RXB0CTRL, (1 << RXM1) | (1 << RXM0) | (1 << BUKT));
// 设置RXM[1:0]=11,关闭接收缓冲器1屏蔽/滤波功能,接收所有报文; // 设置RXM[1:0]=11,关闭接收缓冲器1屏蔽/滤波功能,接收所有报文;
MCP2515_B_WriteReg(RXB1CTRL, (1 << RXM1) | (1 << RXM0)); MCP2515_WriteReg(RXB1CTRL, (1 << RXM1) | (1 << RXM0));
u8 Temp[4] = u8 Temp[4] =
{ {
0, 0, 0, 0 0, 0, 0, 0
}; };
//设置6个验收滤波寄存器为0, //设置6个验收滤波寄存器为0,
MCP2515_B_WriteBuffer(RXF0SIDH, Temp, 4); MCP2515_WriteBuffer(RXF0SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXF1SIDH, Temp, 4); MCP2515_WriteBuffer(RXF1SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXF2SIDH, Temp, 4); MCP2515_WriteBuffer(RXF2SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXF3SIDH, Temp, 4); MCP2515_WriteBuffer(RXF3SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXF4SIDH, Temp, 4); MCP2515_WriteBuffer(RXF4SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXF5SIDH, Temp, 4); MCP2515_WriteBuffer(RXF5SIDH, Temp, 4);
//设置2个验收滤波寄存器为0, //设置2个验收滤波寄存器为0,
MCP2515_B_WriteBuffer(RXM0SIDH, Temp, 4); MCP2515_WriteBuffer(RXM0SIDH, Temp, 4);
MCP2515_B_WriteBuffer(RXM1SIDH, Temp, 4); MCP2515_WriteBuffer(RXM1SIDH, Temp, 4);
//配置引脚 //配置引脚
//设置接收相关引脚控制寄存器,配置它们禁用第二功能 //设置接收相关引脚控制寄存器,配置它们禁用第二功能
MCP2515_B_WriteReg(BFPCTRL, 0); MCP2515_WriteReg(BFPCTRL, 0);
//调试使用,设置BFPCTRL使RX0BF,RX1BF设置为数字输出。 //调试使用,设置BFPCTRL使RX0BF,RX1BF设置为数字输出。
//MCP2515_BitModify( BFPCTRL, (1<<B1BFE)|(1<<B0BFE)|(1<<B1BFM)|(1<<B0BFM), (1<<B1BFE)|(1<<B0BFE) ); //MCP2515_BitModify( BFPCTRL, (1<<B1BFE)|(1<<B0BFE)|(1<<B1BFM)|(1<<B0BFM), (1<<B1BFE)|(1<<B0BFE) );
//设置发送相关引脚控制寄存器,配置它们禁用第二功能 //设置发送相关引脚控制寄存器,配置它们禁用第二功能
MCP2515_B_WriteReg(TXRTSCTRL, 0); MCP2515_WriteReg(TXRTSCTRL, 0);
//MCP2515进入环回模式,进行功能测试 //MCP2515进入环回模式,进行功能测试
//MCP2515_BitModify(CANCTRL, 0XE0, (1<<REQOP1)); //MCP2515_BitModify(CANCTRL, 0XE0, (1<<REQOP1));
//MCP2515进入正常模式 //MCP2515进入正常模式
MCP2515_B_BitModify(CANCTRL, 0xE0, 0); MCP2515_BitModify(CANCTRL, 0xE0, 0);
MCP2515_B_SetInt(TCURxIrqHandle, ENABLE); MCP2515_SetInt(TCURxIrqHandle, ENABLE);
MCP2515_B_ExitCritical(); MCP2515_ExitCritical();
MCP2515_B_SpiHightSpeedInit(); MCP2515_SpiHightSpeedInit();
} }
......
...@@ -120,8 +120,8 @@ int main(void) ...@@ -120,8 +120,8 @@ int main(void)
osThreadDef(Thd_Charge_B, Thd_Charge_B, osPriorityHigh, 0, 2*configMINIMAL_STACK_SIZE); osThreadDef(Thd_Charge_B, Thd_Charge_B, osPriorityHigh, 0, 2*configMINIMAL_STACK_SIZE);
osThreadCreate(osThread(Thd_Charge_B), NULL); osThreadCreate(osThread(Thd_Charge_B), NULL);
//osThreadDef(Thd_Mult, Thd_Mult, osPriorityNormal, 0, configMINIMAL_STACK_SIZE); osThreadDef(Thd_Mult, Thd_Mult, osPriorityNormal, 0, configMINIMAL_STACK_SIZE);
// osThreadCreate(osThread(Thd_Mult), NULL); osThreadCreate(osThread(Thd_Mult), NULL);
osThreadDef(Thd_Lcd, Thd_Lcd, osPriorityNormal, 0, 2*configMINIMAL_STACK_SIZE); osThreadDef(Thd_Lcd, Thd_Lcd, osPriorityNormal, 0, 2*configMINIMAL_STACK_SIZE);
osThreadCreate(osThread(Thd_Lcd), NULL); osThreadCreate(osThread(Thd_Lcd), NULL);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论