完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CH32V103时钟中断里调用spi函数,一直停在spi函数while语句里,如何解决?
代码如下: void tiM3_IRQHandler(void) //TIM3中断 10ms { short temp_data; if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源 if(++tim3_count>=100) { tim3_count=0; tim3_flag=1; if(level_time_flag) ++level_time_count; } adxdata=ADXL345_READ(0x36); } u8 ADXL345_READ(u8 add) { cs_low(); // delay_us(10); SPI_I2S_SendData(SPI1,(add|0x80)<<8|0x00); while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET); while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET); //delay_us(10); cs_high(); return SPI_I2S_ReceiveData(SPI1)&0xff; } 在中断外部调用该函数,能够正常读取数据。 |
|
相关推荐
1个回答
|
|
您好,若不调用spi函数,中断能否正常运行,注意CH32V103中断函数要加中断声明,具体可参考下图。关于SPI函数,可将SPI_I2S_SendData函数放在第一个while判断的后面试一下,若还是卡死在while语句里,麻烦说一下具体卡死在哪个while循环里,后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通。
|
|
|
|
只有小组成员才能发言,加入小组>>
529 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2907 浏览 2 评论
2402 浏览 1 评论
874浏览 2评论
691浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
422浏览 1评论
534浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
818浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 05:12 , Processed in 1.057962 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号