|
@@ -2,7 +2,6 @@
|
|
#include "global.h"
|
|
#include "global.h"
|
|
#include <string.h>
|
|
#include <string.h>
|
|
|
|
|
|
-
|
|
|
|
#define MASK_ID 0x18CE00EF
|
|
#define MASK_ID 0x18CE00EF
|
|
|
|
|
|
CanRxMsg RxMessageImportant;
|
|
CanRxMsg RxMessageImportant;
|
|
@@ -24,7 +23,7 @@ extern SqQueue CanQueueImportant;
|
|
|
|
|
|
u32 result;
|
|
u32 result;
|
|
|
|
|
|
-u8 CAN2_Mode_Init(u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode)
|
|
|
|
|
|
+u8 CAN1_Mode_Init(u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode)
|
|
{
|
|
{
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
CAN_InitTypeDef CAN_InitStructure;
|
|
CAN_InitTypeDef CAN_InitStructure;
|
|
@@ -34,20 +33,20 @@ u8 CAN2_Mode_Init(u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode)
|
|
u32 mask_id = MASK_ID;
|
|
u32 mask_id = MASK_ID;
|
|
|
|
|
|
// 使能相关时钟
|
|
// 使能相关时钟
|
|
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // 使能PORTA时钟
|
|
|
|
|
|
+ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 使能PORTA时钟
|
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); // 使能CAN1时钟
|
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); // 使能CAN1时钟
|
|
|
|
|
|
// 初始化GPIO
|
|
// 初始化GPIO
|
|
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
|
|
|
|
|
|
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // 复用功能
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // 复用功能
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // 100MHz
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // 100MHz
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉
|
|
- GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化PA11,PA12
|
|
|
|
|
|
+ GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化PA11,PA12
|
|
|
|
|
|
// 引脚复用映射配置
|
|
// 引脚复用映射配置
|
|
- GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_CAN2); // GPIOB11复用为CAN1
|
|
|
|
- GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_CAN2); // GPIOB12复用为CAN1
|
|
|
|
|
|
+ GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_CAN1); // GPIOB11复用为CAN1
|
|
|
|
+ GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_CAN1); // GPIOB12复用为CAN1
|
|
|
|
|
|
// CAN单元设置
|
|
// CAN单元设置
|
|
CAN_InitStructure.CAN_TTCM = DISABLE; // 非时间触发通信模式
|
|
CAN_InitStructure.CAN_TTCM = DISABLE; // 非时间触发通信模式
|
|
@@ -100,9 +99,9 @@ u8 CAN2_Mode_Init(u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode)
|
|
void CAN2_Init(void)
|
|
void CAN2_Init(void)
|
|
{
|
|
{
|
|
#if defined(__CAN_BAUD_500K)
|
|
#if defined(__CAN_BAUD_500K)
|
|
- CAN2_Mode_Init(CAN_SJW_1tq, CAN_BS2_6tq, CAN_BS1_7tq, 6, CAN_Mode_Normal); // CAN1初始化环回模式,波特率500Kbps
|
|
|
|
|
|
+ CAN1_Mode_Init(CAN_SJW_1tq, CAN_BS2_6tq, CAN_BS1_7tq, 6, CAN_Mode_Normal); // CAN1初始化环回模式,波特率500Kbps
|
|
#elif defined(__CAN_BAUD_250K)
|
|
#elif defined(__CAN_BAUD_250K)
|
|
- CAN2_Mode_Init(CAN_SJW_1tq, CAN_BS2_6tq, CAN_BS1_7tq, 12, CAN_Mode_Normal); // CAN1初始化环回模式,波特率250Kbps
|
|
|
|
|
|
+ CAN1_Mode_Init(CAN_SJW_1tq, CAN_BS2_6tq, CAN_BS1_7tq, 12, CAN_Mode_Normal); // CAN1初始化环回模式,波特率250Kbps
|
|
#else
|
|
#else
|
|
// #error no can baud macro!;
|
|
// #error no can baud macro!;
|
|
#endif
|
|
#endif
|
|
@@ -141,7 +140,7 @@ u8 CAN2_Send_Msg(u8 *msg, u8 len, u32 can_id)
|
|
}
|
|
}
|
|
|
|
|
|
// CAN1中断服务函数
|
|
// CAN1中断服务函数
|
|
-void CAN2_RX0_IRQHandler(void)
|
|
|
|
|
|
+void CAN1_RX0_IRQHandler(void)
|
|
{
|
|
{
|
|
|
|
|
|
CAN_Receive(CAN1, CAN_FIFO0, &RxMessageImportant); // 1.6us ucos时间戳、示波器测量都是1.6us
|
|
CAN_Receive(CAN1, CAN_FIFO0, &RxMessageImportant); // 1.6us ucos时间戳、示波器测量都是1.6us
|