完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下面程序当用外部触发按键触发外部中断工作正常,但是当接一个霍尔传感器输出去触发时,只要接上霍尔传感器(在示波器上看没有任何电平变化),不管是否有触发都一直在中断。而且这时全局中断都还没有开启。请教大家是否也遇到同样的问题?
void SensorIn_conf(void) { PB_DDR_DDR4 = 0; /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */ PB_CR1_C14 = 0; /* 设置0 悬浮输入 1 上拉输入--查看STM8寄存器.pdf P88 */ //PB_CR2_C24 = 1; /* 设置PB4中断输入 STM8寄存器.pdf P89 */ PB_CR2_C24 = 0; /* 设置PB4悬浮输入 STM8寄存器.pdf P89 */ PB_DDR_DDR5 = 0; /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */ PB_CR1_C15 = 0; /* 设置0 悬浮输入 1 上拉输入--查看STM8寄存器.pdf P88 */ PB_CR2_C25 = 1; /* PB4中断输入 STM8寄存器.pdf P89 */ //PB_CR2_C25 = 0; /* PB4悬浮输入 STM8寄存器.pdf P89 */ EXti_CR1 = (uint8_t)(~MASK_EXTI_CR1_PBIS); //#define MASK_EXTI_CR1_PBIS 0x0C //EXTI_CR1 |= (uint8_t)((uint8_t)(0x03) << 4); /*设置为上升沿和下降沿触发触发中断*/ EXTI_CR1 |= (uint8_t)((uint8_t)(0x01) << 4); /*设置为上升沿和下降沿触发触发中断*/ //EXTI_CR1 = 0x0c; } /* 00:下降沿和低电平触发 01:仅上升沿触发 10:仅下降沿触发 11:上升沿和下降沿触发 */ #pragma vector=6 __interrupt void EXTI_PORTB_IRQHandler(void) { //PD_ODR_ODR2 = ~PD_ODR_ODR2; PD_ODR_ODR2 = 1; } int main(void) { disableInterrupts(); //关中断 SensorIn_conf(); // driver_ini(); //在这设置断点,只要打开了外部中断(SensorIn_conf();)程序就一直执行(EXTI_PORTB_IRQHandler),跑不到这里 sys_ini(); enableInterrupts(); //开中断 } |
|
相关推荐
1个回答
|
|
为了解决您遇到的问题,我们需要逐步检查以下几个方面:
1. 确保霍尔传感器的连接正确:请检查霍尔传感器的VCC、GND和输出引脚是否正确连接到STM8S103的相应引脚上。 2. 检查霍尔传感器的输出电平:使用示波器或逻辑分析仪检查霍尔传感器的输出电平,确保其在触发时能够产生清晰的高低电平变化。 3. 配置外部中断:要使用外部中断,您需要配置相应的外部中断引脚(例如PB4)以及中断优先级。以下是配置外部中断的示例代码: ```c void ExtInt_conf(void) { PB_DDR_DDR4 = 0; // 设置PB4为输入 PB_CR1_C14 = 0; // 设置PB4为模拟输入 ITC_IRQ_PRIORITY = 0x03; // 设置中断优先级 ITC_SPR1_SPRX4 = 0x80; // 设置外部中断4(PB4)的优先级 CR_HAEN = 1; // 启用高电平触发 CR_HPOL = 0; // 触发电平为低电平 CR_EDGE = 1; // 边沿触发 EICRA = 0x01; // 启用外部中断4(PB4) EIMSK = 0x01; // 使能外部中断4(PB4) sei(); // 开启全局中断 } ``` 4. 实现外部中断服务程序:在您的代码中实现外部中断服务程序,以便在触发外部中断时执行相应的操作。 ```c ISR_HANDLER(EXT_INT4_vect) { // 在这里实现中断处理逻辑 } ``` 5. 检查霍尔传感器与STM8S103之间的干扰:如果霍尔传感器与STM8S103之间的距离过近,可能会产生电磁干扰,导致误触发。尝试增加它们之间的距离,或者在它们之间添加屏蔽措施。 6. 检查电源和地线:确保霍尔传感器和STM8S103的电源和地线连接正确,避免电源干扰。 按照以上步骤进行排查和调整,应该能够解决您遇到的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1816 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1691 浏览 2 评论
1950浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
753浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
585浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 21:33 , Processed in 0.669818 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号