描述:
SPI轮询接收数据函数
HAL_SPI_Receive(*hspi, *pData, Size, Timeout); //SPI接收
- *hspi: SPI号指针,程序中用到了&hspi1
- *pData: 数据指针,程序中用到了data
- Size:数据长度
- Timeout:超时时间
示例:
根据使用的外设,关闭未使用外设的初始化
/* Initialize all configured peripherals */ MX_GPIO_Init(); //初始化GPIO // MX_ADC_Init(); // MX_WWDG_Init(); // MX_IWDG_Init(); // MX_USART1_UART_Init(); // MX_USB_DEVICE_Init(); // MX_TIM3_Init(); MX_SPI1_Init(); //初始化SPI1 // MX_I2C1_Init(); // MX_USART2_UART_Init(); // MX_TIM2_Init(); // MX_RTC_Init();
编辑主程序,当spi接收到0x05数据时亮灯。
/* Infinite loop */ /* USER CODE BEGIN WHILE */ uint8_t data[1] = ""; while (1) { ? while(HAL_SPI_Receive(&hspi1, data, 1, 100) != HAL_OK) //接收数据 ? { if(data[0] == 0x05) { HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); //亮灯提示 HAL_Delay(1000); //等待1秒 ? HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); //灭灯 data[0] = 0x00; //清除数据 } } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
以上示例针对eefrog的STM32F042G模块,根据STM32cubeMX综合配置基础上设计,不保证在其它模块上有同样效果。