1.keil的奇怪问题
创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了
 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的时候会随机将数据放到CCM中。而Lwip通讯靠的是以太网的专用DMA,如果在编译的时候,lwip的描述符被分配到CCM中,那就会导致ping不同的现象。
 
2.STM32的CAN ID滤波器的设置
列表模式和掩码模式的两个设置,以及多滤波器的设置方法
static void CanBSP_STM32_Can1_CfgFilter()   
{CAN_FilterTypeDef  sFilterConfig;CAN_FilterTypeDef  sFilterConfig1;sFilterConfig.FilterBank = 0;                       //过滤器0sFilterConfig.FilterMode =  CAN_FILTERMODE_IDLIST;  //设为列表模式    sFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;    sFilterConfig.FilterIdHigh = ((uint32_t)0x181)<<5;   //基本ID放入到STID中  sFilterConfig.FilterIdLow  = ((uint32_t)0x182) <<5;    sFilterConfig.FilterMaskIdHigh =((uint32_t)0x183)<<5;sFilterConfig.FilterMaskIdLow  =((uint32_t)0x184)<<5; //接收到的报文放入到FIFO0中 sFilterConfig.FilterFIFOAssignment = CAN1FIFO;   sFilterConfig