1 | GPIO_InitTypeDef GPIO_InitStructure;
|
2 | CAN_InitTypeDef CAN_InitStructure;
|
3 | CAN_FilterInitTypeDef CAN_FilterInitStructure;
|
4 | NVIC_InitTypeDef NVIC_InitStructure;
|
5 |
|
6 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
|
7 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
|
8 |
|
9 | GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_CAN1);
|
10 | GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_CAN1);
|
11 |
|
12 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
|
13 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
14 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
15 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
16 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
17 |
|
18 | GPIO_Init(GPIOD, &GPIO_InitStructure);
|
19 |
|
20 | CAN_InitStructure.CAN_TTCM = DISABLE;
|
21 | CAN_InitStructure.CAN_ABOM = DISABLE;
|
22 | CAN_InitStructure.CAN_AWUM = DISABLE;
|
23 | CAN_InitStructure.CAN_NART = DISABLE;
|
24 | CAN_InitStructure.CAN_RFLM = DISABLE;
|
25 | CAN_InitStructure.CAN_TXFP = DISABLE;
|
26 | CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
|
27 | CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
|
28 |
|
29 | //500KBps (CAN mit 30MHz)
|
30 | CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;
|
31 | CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq;
|
32 | CAN_InitStructure.CAN_Prescaler = 4;
|
33 | CAN_Init(CAN1, & CAN_InitStructure);
|
34 |
|
35 | CAN_FilterInitStructure.CAN_FilterNumber = 0;
|
36 | CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
|
37 | CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
|
38 | CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
|
39 | CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
|
40 | CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
|
41 | CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
|
42 | CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
|
43 | CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
|
44 | CAN_FilterInit(&CAN_FilterInitStructure);
|
45 |
|
46 | CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
|
47 |
|
48 | NVIC_InitStructure.NVIC_IRQChannel=CAN1_RX0_IRQn;
|
49 | NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
|
50 | NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x16;
|
51 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x16;
|
52 | NVIC_Init(&NVIC_InitStructure);
|