代码: CAN_FilterInitStructure.CAN_FilterIdHigh= (((((u32)0x01 <<21)&0xFFFF0000)>>16)); CAN_FilterInitStructure.CAN_FilterIdLow= ((((u32)0x01<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xFFFF) ; CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0xFFFF; 问题1:以上代码设置是只要ID为0x01发送过来的数据,才会触发接收中断,其他ID发送过来的数据都不会触发接收中断? 问题2:为什么要左移21位,右移16位?? 问题3:如果接收多个ID要这么设置,比如:0x01,0x02,0x03 |
STM32F107+LWIP---如何检查tcp通讯断开?并重新连接
有没有用过数字式mems麦克风的,想问下SPI通讯的问题
stm32f103 CAN通讯多帧发送问题?
STM32F107作为USB主机模拟串口通讯不成功(采用PL2303芯片)
STM32F103C8 LIN通讯例程
求助,丐版J-Link通讯不上
ethernet可以与ethercat通讯吗?
LIS3DH SPI 通讯问题
STM32F373 CAN通讯问题CAN_FLAG_LEC
请教高手看看,STM32F1的多机通讯,地址匹配唤醒问题
1. 标准帧ID是11位放在寄存器位31:21,所以左移21
2. 32位被拆分成高低16字节,所以在设置CAN_FilterIdHigh的时候要右移16位才能取到高16位
3.你说只有收到0x01才能触发中断,看来设置的是屏蔽位模式,如果要接收0x02,0x03,可以将相应位设置为不关心,例如
CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0xFFFF;
CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0xFFFC;
就能接收0x00-0x03的报文了
评分
查看全部评分
谢谢您的解惑!!!