当前位置:   article > 正文

stm32 SPI的从机中断接收_stm32f1 spi slave 中断接收 hal_nvic

stm32f1 spi slave 中断接收 hal_nvic

先放上代码:

  1. hspi1.Instance = SPI1;
  2. hspi1.Init.Mode = SPI_MODE_SLAVE;
  3. hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  4. hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  5. hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  6. hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  7. hspi1.Init.NSS = SPI_NSS_SOFT;//SPI_NSS_HARD_OUTPUT;
  8. // hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  9. hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  10. hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  11. hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  12. hspi1.Init.CRCPolynomial = 7;
  13. hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  14. hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  15. if(HAL_SPI_Init(&hspi1) != HAL_OK) {
  16. _Error_Handler(__FILE__, __LINE__);
  17. }
  18. HAL_SPI_Receive_IT(&hspi1, receive_data, 162);
  19. void SPI1_IRQHandler(void)
  20. {
  21. HAL_SPI_IRQHandler(&hspi1);
  22. HAL_SPI_Receive_IT(&hspi1, receive_data, 162);
  23. }

笔者是采用这个代码进行SPI持续接收的,将中断接收函数放在SPI_RxISR_8BIT90函数下的SPI1_RxCpltCallback()中时,会丢包,所以没有采用。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号