ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
1273481 Топик полностью
Argon (05.01.2023 21:56, просмотров: 211) ответил bnb62 на Требуется модифицировать эти значения при поступлении команды извне (GSM, GPRS, LTE, SMS)
Лень конкретно вникать, но предположу, что вопрос в правильной инициализации фильтров и масок. У STM32 там вроде черезжопное распределение фильтровых и масочных битов по регистрам, вроде для какой-то совместимости. Мой вариант: 
void CAN_Filter_Cfg(uint32_t bank, uint32_t id, uint32_t mask) {
	CAN_FilterTypeDef  sFilterConfig;
	sFilterConfig.FilterBank = bank;
	sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
	sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
	sFilterConfig.FilterIdHigh = (uint16_t)(id >> 13);
	sFilterConfig.FilterIdLow = (uint16_t)(id << 3) | CAN_ID_EXT;
	sFilterConfig.FilterMaskIdHigh = (uint16_t)(mask >> 13);
	sFilterConfig.FilterMaskIdLow = (uint16_t)(mask << 3) | CAN_ID_EXT;
	sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
	sFilterConfig.FilterActivation = ENABLE;
	sFilterConfig.SlaveStartFilterBank = 14;
	  if (HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK)
	    {
	      /* Filter configuration Error */
	    }
}


Использование - что-то вроде

CAN_Filter_Cfg(0, 0x1FFFFFFF, 0x00000000); //принимаем все возможные CAN ID 

или 

CAN_Filter_Cfg(0, 0x00000010, 0x1FFFFFF0);  //