STM32 的CAN 通信实现(代码+图示) 1
CAN 是控制器局域网络(Controller Area Network, CAN)的简称 (理论知识不做讲解了,太多了) 2
芯片选用:TJA1050 差分信号输入, 这里的显性电平CANH 和CANL 压差是2V 左右,逻辑上表示“0” 两线之间没有压差CANH 和CANL 都是2
5V 左右,表示逻辑“1” (二)实现代码 1
/* 配置 CAN 模块*/ CAN_Config(); void CAN_Config(void) { CAN_GPIO_Config(); //此处用PB8/PB9 CAN_NVIC_Config(); CAN_Mode_Config(); CAN_Filter_Config(); } 2
对于 CAN_NVIC_Config(); 看下 CAN 的中断分类 static void CAN_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /*中断设置*/ NVIC_InitStructure
NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;//CAN1 RX0中断 NVIC_InitStructure
NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级 0 NVIC_InitStructure
NVIC_IRQChannelSubPriority = 0; //子优先级 0 NVIC_InitStructure
NVIC_IRQChannelCmd = ENABLE