完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我就用了EXti一个外设。发现在中断函数里写了条中断确认语句 ==SET后发现中断实现不了。删除==SET。或者改成!=RESET就可以了。这是为什么啊?十分困惑。求解答
|
|
相关推荐
1个回答
|
|
在STM8微控制器中,中断功能是通过外部中断(EXTI)实现的。当外部事件发生时,如GPIO引脚的电平变化,微控制器会触发相应的中断。在中断服务程序(ISR)中,需要对中断标志位进行确认,以清除中断请求并允许再次触发中断。
根据您的描述,您在中断函数中使用了类似于 `==SET` 的语句,这可能导致了问题。在STM8中,中断标志位通常是一个位字段,需要使用位操作来检查和清除。以下是一些可能的原因和解决方案: 1. **语法错误**:在STM8的寄存器操作中,通常使用位操作符(如 `&` 和 `|`)来检查和修改位。`==SET` 这样的表达式可能不是STM8汇编语言或C语言中的正确语法。 2. **中断标志位未清除**:在中断服务程序中,需要清除中断标志位以允许再次触发中断。如果您使用了 `==SET`,可能没有正确地清除标志位,导致中断无法再次触发。正确的做法是使用位操作来清除标志位,例如:`EXTI_CR1 &= ~EXTI_CR1_PIN;`。 3. **中断优先级问题**:STM8微控制器支持中断优先级,如果其他中断的优先级高于您的EXTI中断,可能会导致您的中断服务程序无法被调用。请检查您的中断优先级设置,确保EXTI中断具有合适的优先级。 4. **硬件问题**:如果上述软件方面的问题都排除了,那么可能是硬件连接或配置存在问题。请检查您的GPIO引脚配置、上拉/下拉电阻设置等,确保硬件连接正确。 综上所述,您需要检查以下几点: - 确保使用正确的位操作来检查和清除中断标志位。 - 检查中断优先级设置,确保EXTI中断具有合适的优先级。 - 检查硬件连接和配置,确保GPIO引脚等设置正确。 希望这些信息能帮助您解决问题。如果您能提供更详细的代码和硬件配置信息,我将更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:36 , Processed in 0.645365 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号