完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32作为从设备,要通过spi2和主设备通讯。
现在是用中断接收数据的,接收完一帧信息后置个标志位。 主程序里有个函数,函数中判断spi接收标志位,如果是1的话,通过串口将接收到的数据发送出来。 以上这部分,磕磕碰碰的算是调通了(画了很久)。主函数里不能只做spi通讯部分吧,然后加上其他程序部分。结果spi通讯这里就不工作了...
主函数里的第一个语句,是spi2通讯部分的函数,如果只保留这个,通讯没问题。然后在其后随便加了个printf语句,结果spi通讯就不工作了... 具体现象是,不再通过串口将接收到的数据发送过来,并且作为spi从设备,接收数据的同时,应该也发送数据,结果,没有数据发出去。 以下为SPI2_SalveProcess()函数:
以下为spi2中断处理函数:
串口只开了接收中断,并且,现在的操作,并没有通过串口向单片机发送数据。 spi2也只是开了接收中断。 以下为中断优先级配置:
|
|
相关推荐
1个回答
|
|
SPI中断处理函数不被执行可能有以下几个原因:
1. 中断优先级设置不正确:确保SPI中断的优先级高于其他中断,否则可能会被其他中断抢占。 2. 中断使能位未设置:检查SPI中断使能位是否已设置,例如:`SPI2->CR2 |= SPI_CR2_RXNEIE;` 3. 中断向量表未配置:确保在中断向量表中配置了SPI中断处理函数的入口地址。 4. 中断服务例程(ISR)未正确实现:检查SPI中断服务例程是否正确实现了数据接收和标志位设置。 5. SPI配置问题:检查SPI的配置是否正确,例如时钟、数据帧格式、主从模式等。 6. 其他程序部分影响了SPI中断:如果其他程序部分与SPI中断共享资源或影响了中断使能,可能导致SPI中断无法正常工作。 针对你的问题,可以尝试以下步骤进行排查: 1. 确保SPI中断优先级设置正确。 2. 检查SPI中断使能位是否已设置。 3. 检查中断向量表是否配置了SPI中断处理函数的入口地址。 4. 检查SPI中断服务例程(ISR)是否正确实现了数据接收和标志位设置。 5. 检查SPI配置是否正确。 6. 分析其他程序部分是否影响了SPI中断。 7. 使用调试工具(如Keil MDK-ARM)逐步调试,观察中断处理函数是否被调用。 8. 如果问题仍然存在,尝试将其他程序部分与SPI中断处理函数分离,确保它们之间没有相互影响。 通过以上步骤,你应该能够找到导致SPI中断处理函数不被执行的原因,并进行相应的解决。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1810 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
737 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1687 浏览 2 评论
1945浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
750浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
584浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 12:58 , Processed in 0.782423 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号