STM32 外设中断配置流程

本人写的博客是自己个人感悟,学习思路的整理,毕竟能力有限,欢迎各位批评指正。转载请注明出处。

STM32 外设中断配置流程

参考资料:《STM32库开发实战指南》

时间:2013.12.05                   

SPI为例:

(至于那些结构体为什么这么配置,大家可以在STM32的官方资料以及相关学习书籍上找到,这里不再多说,只是针对流程进行简单介绍)

/***********SPI2配置函数***********/

void SPI_Config(void)

{  

/*声明结构体*/

GPIO_InitTypeDef  GPIO_InitStructure;

NVIC_InitTypeDef  NVIC_InitStructure;

SPI_InitTypeDef    SPI_InitStructure;

 

/*使能外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE );

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

 

/*配置GPIO_InitStructure引脚参数 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

 

/*配置NVIC_InitStructure参数*/

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = SPI2_IRQn;     

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

/*⑤配置SPI_InitStructure参数*/

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex ;

SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b ;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2 ;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB ;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI2 , &SPI_InitStructure  );

 

/*⑥注意以上配置完后要使能外设,不然外设是不会工作的*/

SPI_Cmd(SPI2 , ENABLE);//使能SPI2

 

/*⑦配置SPI的事件触发中断*/

SPI_I2S_ITConfig( SPI2, SPI_I2S_IT_RXNE, ENABLE );//相当于开启中断

}

然后在stm32f10x_it.c文件中填入中断服务函数

void SPI2_IRQHandler(void)

{

 if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) == SET)//注意标志位的选择

 { 

  SPI_I2S_ClearITPendingBit( SPI2 , SPI_I2S_IT_RXNE ;//清除标志位

  //写下自己的代码

 }

}

好啦,基本上就是这些了。ST的官方库有很多共通的地方,比如xxx_Cmd()函数来使能外设,xxx_ITConfig()函数来配置外设的事件触发中断。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值