OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5370|回复: 10

怎样将SPI的MISO引脚配置外部中断

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2019-7-8
在线时间
51 小时
发表于 2021-1-24 18:54:03 | 显示全部楼层 |阅读模式
10金钱
最近在做用STM32和AD7190的SPI通信。当AD7190转换完成后,MISO引脚会被拉低,我不想在main函数中轮询监测这个MISO引脚,想问如何将SPI的MISO引脚配置成下降沿外部中断。我配置完后发现SPI不工作了,我用的是SPI2,MISO是PB14引脚,下面是我的代码,有没有好心人帮忙看看我配置的对不对,谢谢了。


void EXTIX_Init(void)
{

           EXTI_InitTypeDef EXTI_InitStructure;
          NVIC_InitTypeDef NVIC_InitStructure;

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //使能复用功能时钟


          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
          EXTI_InitStructure.EXTI_Line=EXTI_Line14;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

          NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;                        //使能按键PB14所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //抢占优先级1
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                                        //子优先级1
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);            //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

}




void EXTI15_10_IRQHandler()
{
        if(EXTI_GetITStatus(EXTI_Line14) != RESET)
        {
                AD7190_ContinuousCovPolling(&AD7190);
                EXTI_ClearITPendingBit(EXTI_Line14);
        }
}

最佳答案

查看完整内容[请看2#楼]

看看MISO旁边的IO是否空着, 是就把它跟MISO接一块, 把这个IO配置为外部中断, 管脚是你付了钱的,放着不用也要付钱的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-1-24 18:54:04 | 显示全部楼层
本帖最后由 edmund1234 于 2021-1-25 10:36 编辑

看看MISO旁边的IO是否空着, 是就把它跟MISO接一块, 把这个IO配置为外部中断, 管脚是你付了钱的,放着不用也要付钱的
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2021-1-24 19:28:22 | 显示全部楼层
不能这么用的
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2019-7-8
在线时间
51 小时
 楼主| 发表于 2021-1-24 19:55:53 | 显示全部楼层

请问这种状况下我应该如何实现监测MISO呢,只有放进main函数或者定时器里轮询吗
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2021-1-24 21:13:26 | 显示全部楼层
livecf 发表于 2021-1-24 19:55
请问这种状况下我应该如何实现监测MISO呢,只有放进main函数或者定时器里轮询吗

为什么要监测呢?这个管脚就是spi的数据管脚呀。
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2021-1-25 08:48:19 | 显示全部楼层
做一下时分复用吧。就是空闲的时候启用EXTI中断,
在使用SPI前关掉EXTI,可以正常读写SPI,完事后再重新把中断打开
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

2

主题

459

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4504
金钱
4504
注册时间
2018-5-14
在线时间
962 小时
发表于 2021-1-25 08:53:42 | 显示全部楼层
SPI都是由主机发起通信的,主机不给时钟根本就没法通信,你这种情况就是需要通信的时候配置IO是SPI复用,通信完配置普通IO和中断了。不过AD系列的芯片可以查询某个寄存器判断是否转换完成,根本不需要判断IO
回复

使用道具 举报

0

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2020-4-14
在线时间
36 小时
发表于 2021-1-28 15:50:30 | 显示全部楼层
xkwy 发表于 2021-1-25 08:48
做一下时分复用吧。就是空闲的时候启用EXTI中断,
在使用SPI前关掉EXTI,可以正常读写SPI,完事后再重新把 ...

想追问大神一个问题:
如何在我功能需要的时候打开定时器3计数,赋值自动重装载寄存器并且开启中断后,继续执行主程序,当定时器溢出中断事件发生时触发中断并请CNT计数器,且关闭该定时器3的中断,麻烦解答一下
回复

使用道具 举报

0

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2020-4-14
在线时间
36 小时
发表于 2021-1-28 15:55:47 | 显示全部楼层
edmund1234 发表于 2021-1-25 10:30
看看MISO旁边的IO是否空着, 是就把它跟MISO接一块, 把这个IO配置为外部中断, 管脚是你付了钱的,放着不 ...

那请问,这样连两个引脚是不是在SPI的miso引脚通讯的时候也会在另外一个引脚触发下降沿中断?
回复

使用道具 举报

0

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2020-4-14
在线时间
36 小时
发表于 2021-1-28 15:59:35 | 显示全部楼层
这句AD7190_ContinuousCovPolling(&AD7190);是不是停止AD运行?那再spi通讯的时候14引脚会有很多下降沿中断,AD当然不能正常使用了
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-1-28 17:11:21 | 显示全部楼层
本帖最后由 edmund1234 于 2021-1-28 17:14 编辑
cdhui0574 发表于 2021-1-28 15:55
那请问,这样连两个引脚是不是在SPI的miso引脚通讯的时候也会在另外一个引脚触发下降沿中断?

是的, 所以你要控制什么时候才使能中断

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-13 05:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表