STM32_MDK_bxCAN
/* CAN FIFO0 message pending interrupt enable */
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);// 设置CAN1,FIFO0接收中断使能
// CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE);
}
/*******************************************************************************
* Function Name : bxCAN_Configuration
* Description : CAN初始化
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void bxCAN_Configuration(void)
{
bxCAN_Port_Configuration();
bxCAN_Property_Configuration();
}
/*******************************************************************************
* Function Name : Interrupt_Handle_bxCAN
* Description : 中断服务函数
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void Interrupt_Handle_bxCAN(void)
{
CanRxMsg RxMessage;
RxMessage.StdId=0x00;
RxMessage.ExtId=0x00;
RxMessage.IDE=0;
RxMessage.DLC=0;
RxMessage.FMI=0;
RxMessage.Data[0]=0x00;
RxMessage.Data[1]=0x00;
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
}
初始化第一部分基本属性设置,要看下datasheet中,CAN的发送流程和接受流程,然后看下他相关的状态寄存器就知道其意义了。在过滤器设置部分,要理解他两种模式的不同之处,屏蔽位模式就是给出 一个参考值然后用屏蔽属性去匹配,列表模式就是直接根据寄存器的参考值进行全匹配。这里对屏蔽位我也没有做特殊的设置,就设置全部接受。
本历程只实现了发送标准帧,扩展帧,接受帧数据。
接收程序使用中断方式,见上面代码函数Interrupt_Handle_bxCAN(),发送代码如下:
void Send_Std_KLS_KL15(unsigned char value)
{
CanTxMsg TxMessage;
TxMessage.StdId=0x570;
TxMessage.IDE=CAN_ID_STD;
TxMessage.RTR=CAN_RTR_DATA;
TxMessage.DLC=8;
TxMessage.Data[0]=value;
TxMessage.Data[1]=0x00;
TxMessage.Data[2]=0x00;
TxMessage.Data[3]=0x00;
TxMessage.Data[4]=0x00;
TxMessage.Data[5]=0x00;
TxMessage.Data[6]=0x00;
TxMessage.Data[7]=0x00;
CAN_Transmit(CAN1, &TxMessage);
}
这个是发送一个标准帧,如果发送扩展帧 如下:
void Send_Exd_message(void)
{
CanTxMsg TxMessage;
TxMessage.StdId=0x0000;
TxMessage.ExtId=0x1234;
TxMessage.IDE=CAN_ID_EXT;
TxMessage.RTR=CAN_RTR_DATA;
TxMessage.DLC=2;
TxMessage.Data[0]=0xDE;
TxMessage.Data[1]=0xCA;
CAN_Transmit(CAN1, &TxMessage);
}
由于CAN透明化了数据链路层,所以在实际应用中只要用好屏蔽位就能够高效的使用CAN网络。
STM32MDKbxCA 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)