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(); //在这设置断点,只要打开了外部中断就跑不到这里
sys_ini();
enableInterrupts(); //开中断
}
|