×
单片机 > 单片机程序设计 > 详情

STM32 Hal库SPI中断

发布时间:2020-05-18 发布时间:
|

SPI从机接受接收中断配置


SPI_HandleTypeDef SPI2_Handler;  //SPI2句柄

 

uint8_t receive_byte;   

//SPI口初始化

void SPI2_Init(void)

{

    SPI2_Handler.Instance=SPI2;                         //SPI2

    SPI2_Handler.Init.Mode=SPI_MODE_SLAVE;             //设置SPI工作模式,设置为主模式

    SPI2_Handler.Init.Direction=SPI_DIRECTION_2LINES;   //设置SPI单向或者双向

    SPI2_Handler.Init.DataSize=SPI_DATASIZE_8BIT;       //设置SPI的数据大小

    SPI2_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH;    //串行同步时钟的空闲状态为高电平

    SPI2_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;         //串行同步时钟的第二个跳变沿(

    SPI2_Handler.Init.NSS=SPI_NSS_SOFT;                 //NSS信号由硬件(NSS管脚)

    SPI2_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2;//定义波特率预分频的值

    SPI2_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;        //指定数据传输从MSB位还是LSB位

    SPI2_Handler.Init.TIMode=SPI_TIMODE_DISABLE;        //关闭TI模式

    SPI2_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//关闭硬件CRC校验

    SPI2_Handler.Init.CRCPolynomial=7;                  //CRC值计算的多项式

    HAL_SPI_Init(&SPI2_Handler);//初始化

 

    //SPI2_ReadWriteByte(0Xff);                           //启动传输

 

HAL_SPI_Receive_IT(&SPI2_Handler, &receive_byte, 1);

HAL_NVIC_SetPriority(SPI2_IRQn, 2, 0);

HAL_NVIC_EnableIRQ(SPI2_IRQn);

__HAL_SPI_ENABLE(&SPI2_Handler);             //使能SPI

}

 

/**

* @brief This function handles SPI2 global interrupt.

*/

void SPI2_IRQHandler(void)

{

HAL_SPI_IRQHandler(&SPI2_Handler);

HAL_SPI_Receive_IT(&SPI2_Handler, &receive_byte, 1);

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计