initial stuff for recieving from can

This commit is contained in:
2025-07-01 18:05:32 -07:00
parent 4caceb3617
commit ba906e2a54
2 changed files with 22 additions and 3 deletions

View File

@@ -54,7 +54,17 @@ void MX_CAN1_Init(void)
Error_Handler(); Error_Handler();
} }
/* USER CODE BEGIN CAN1_Init 2 */ /* USER CODE BEGIN CAN1_Init 2 */
CAN_FilterTypeDef canfilterconf;
canfilterconf.FilterActivation = CAN_FILTER_ENABLE;
canfilterconf.FilterBank = 0;
canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1;
canfilterconf.FilterIdHigh = 0x399 << 5;
canfilterconf.FilterIdLow = 0x0000;
canfilterconf.FilterMaskIdHigh = 0x7FF << 5;
canfilterconf.FilterMaskIdLow = 0x0000;
canfilterconf.FilterMode = CAN_FILTERMODE_IDMASK;
canfilterconf.FilterScale = CAN_FILTERSCALE_32BIT;
HAL_CAN_ConfigFilter(&hcan1, &canfilterconf);
/* USER CODE END CAN1_Init 2 */ /* USER CODE END CAN1_Init 2 */
} }

View File

@@ -71,6 +71,8 @@ KbdPins col_pins[COLS] = {
{GPIOB, GPIO_PIN_13} {GPIOB, GPIO_PIN_13}
}; };
HIDReport REPORT = {0,0,0,0,0,0,0,0}; HIDReport REPORT = {0,0,0,0,0,0,0,0};
CAN_RxHeaderTypeDef RxHeader;
uint8_t RxData[8];
/* USER CODE END PV */ /* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
@@ -116,7 +118,9 @@ int main(void)
MX_CAN1_Init(); MX_CAN1_Init();
MX_USB_DEVICE_Init(); MX_USB_DEVICE_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
HAL_CAN_Start(&hcan1);
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
HAL_Delay(50);
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */
@@ -127,7 +131,6 @@ int main(void)
/* USER CODE END WHILE */ /* USER CODE END WHILE */
for(int col = 0; col < COLS; col++){ for(int col = 0; col < COLS; col++){
HAL_GPIO_WritePin(col_pins[col].PORT, col_pins[col].PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(col_pins[col].PORT, col_pins[col].PIN, GPIO_PIN_SET);
HAL_Delay(1);
for(int row = 0; row < ROWS; row++){ for(int row = 0; row < ROWS; row++){
if(HAL_GPIO_ReadPin(row_pins[row].PORT, row_pins[row].PIN)){ if(HAL_GPIO_ReadPin(row_pins[row].PORT, row_pins[row].PIN)){
addHIDReport(matrix[row][col], 1); addHIDReport(matrix[row][col], 1);
@@ -143,6 +146,12 @@ int main(void)
} }
/* USER CODE END 3 */ /* USER CODE END 3 */
} }
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
{
HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader, RxData);
addHIDReport(RxData[0], (RxData[1] & (1 << 7)) ? 1 : 0);
}
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
* @retval None * @retval None