initial stuff for recieving from can
This commit is contained in:
@@ -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 */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user