下面程序当用外部触发按键触发外部中断工作正常,但是当接一个霍尔传感器输出去触发时,只要接上霍尔传感器(在示波器上看没有任何电平变化),不管是否有触发都一直在中断。而且这时全局中断都还没有开启。请教大家是否也遇到同样的问题? 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(); //开中断 } |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
你也遇到相同的问题?
* @brief External Interrupt PORTB Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4)
{}
是不是这里问题?
中断入口错了?